Python中__repr__和__str__区别详解

 更新时间:2019年11月07日 09:34:22   作者:我爱学python  
这篇文章主要介绍了Python中__repr__和__str__区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

看下面的例子就明白了

class Test(object):
  def __init__(self, value='hello, world!'):
    self.data = value

>>> t = Test()
>>> t
<__main__.Test at 0x7fa91c307190>
>>> print t
<__main__.Test object at 0x7fa91c307190>

看到了么?上面打印类对象并不是很友好,显示的是对象的内存地址

下面我们重构下该类的__ repr__以及str,看看它们俩有啥区别

# 重构__repr__
class TestRepr(Test):
  def __repr__(self):
    return 'TestRepr(%s)' % self.data

>>> tr = TestRepr()
>>> tr        直接终端显示,不print就是面向程序员
TestRepr(hello, world!)
>>> print tr     print是面向程序员
TestRepr(hello, world!)

重构__ repr__方法后,不管直接输出对象还是通过print打印的信息都按我们repr方法中定义的格式进行显示了

# 重构__str__
calss TestStr(Test):
  def __str__(self):
    return '[Value: %s]' % self.data

>>> ts = TestStr()
>>> ts
<__main__.TestStr at 0x7fa91c314e50>
>>> print ts
[Value: hello, world!]

你会发现,直接输出对象ts时并没有按我们str方法中定义的格式进行输出,而用print输出的信息却改变了

repr和str这两个方法都是用于显示的,str是面向用户的,而repr面向程序员。

打印操作会首先尝试str和str内置函数(print运行的内部等价形式),它通常应该返回一个友好的显示。

__ repr__用于所有其他的环境中:用于交互模式下提示回应以及repr函数,如果没有使用str,会使用print和str。它通常应该返回一个编码字符串,可以用来重新创建对象,或者给开发者详细的显示。

当我们想所有环境下都统一显示的话,可以重构repr方法;当我们想在不同环境下支持不同的显示,例如终端用户显示使用str,而程序员在开发期间则使用底层的repr来显示,实际上str只是覆盖了repr以得到更友好的用户显示。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python Dataframe常见索引方式详解

    Python Dataframe常见索引方式详解

    这篇文章主要介绍了Python Dataframe常见索引方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Python日志记录与loguru高级用法全解析

    Python日志记录与loguru高级用法全解析

    Python标准库的logging模块功能强大但配置复杂,而第三方库loguru通过创新的API设计大幅降低了日志管理门槛,本文将深入对比两者差异,并演示loguru在现代应用中的高级实践
    2025-06-06
  • Python Json序列化与反序列化的示例

    Python Json序列化与反序列化的示例

    这篇文章主要介绍了Python Json序列化与反序列化的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • python正则表达式的懒惰匹配和贪婪匹配说明

    python正则表达式的懒惰匹配和贪婪匹配说明

    这篇文章主要介绍了python正则表达式的懒惰匹配和贪婪匹配说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 解决pytorch DataLoader num_workers出现的问题

    解决pytorch DataLoader num_workers出现的问题

    今天小编就为大家分享一篇解决pytorch DataLoader num_workers出现的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • 经验丰富程序员才知道的8种高级Python技巧

    经验丰富程序员才知道的8种高级Python技巧

    这篇文章主要介绍了经验丰富程序员才知道的8种高级Python技巧,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Django+simpleui实现文件上传预览功能(详细过程)

    Django+simpleui实现文件上传预览功能(详细过程)

    该文章详细介绍了如何在Django框架中实现文件上传、预览和下载功能,并使用SimpleUI美化Django后台界面,通过创建模型、表单、视图和配置URL,实现了文件的存储和管理,同时,文章还提到了配置媒体文件、创建模板以及在生产环境中的部署注意事项,感兴趣的朋友一起看看吧
    2025-02-02
  • 在keras里面实现计算f1-score的代码

    在keras里面实现计算f1-score的代码

    这篇文章主要介绍了在keras里面实现计算f1-score的代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • 好的Python培训机构应该具备哪些条件

    好的Python培训机构应该具备哪些条件

    python是现在开发的热潮,大家应该如何学习呢?许多人选择自学,还有人会选择去培训结构学习,那么好的培训机构的标准是什么样的呢?下面跟随脚本之家小编一起通过本文学习吧
    2018-05-05
  • 使用Python进行有效的数据脱敏的常用方法

    使用Python进行有效的数据脱敏的常用方法

    数据脱敏(Data Masking)是在数据处理和分析过程中,对敏感信息进行处理,以保护个人隐私和企业机密的一种技术手段,数据脱敏的目的是不会泄露敏感信息,同时保持数据的可用性和分析价值,本文给大家介绍了使用Python进行有效的数据脱敏的常用方法,需要的朋友可以参考下
    2025-03-03

最新评论