Python中__repr__与__str__函数

python官网文档
object.repr(self)
由 repr() 内置函数调用以输出一个对象的“官方”字符串表示。如果可能,这应类似一个有效的 Python 表达式,能被用来重建具有相同取值的对象(只要有适当的环境)。如果这不可能,则应返回形式如 <…some useful description…> 的字符串。返回值必须是一个字符串对象。如果一个类定义了 repr() 但未定义 str(),则在需要该类的实例的“非正式”字符串表示时也会使用 repr()。

此方法通常被用于调试,因此确保其表示的内容包含丰富信息且无歧义是很重要的。

object.str(self)
通过 str(object) 以及内置函数 format() 和 print() 调用以生成一个对象的“非正式”或格式良好的字符串表示。返回值必须为一个 字符串 对象。

此方法与 object.repr() 的不同点在于 str() 并不预期返回一个有效的 Python 表达式:可以使用更方便或更准确的描述信息。

内置类型 object 所定义的默认实现会调用 object.repr()。

自己的理解
1.str__会在实例被当作str类型使用的时候被调用,直接查看对象时__repr__被调用。
2.我们也可以使用内置的 str() 或 repr() 方法,它们会调用类中对应的双下划线方法,直接调用__str
*或 repr 方法也可以。
3.str 更容易理解,便于人们阅读,必须返回一个字符串对象(没有验证),__repr__返回结果更加准确,目的是调试,如果可以尽可能返回,相同环境下重建具有相同取值的对象的表达式,如果不能满足返回一些有用信息的字符串也可以。
4.当需要调用__str__时,str__没有被定义则会调用用__repr,而需要调用__repr__时不会调用
str,因此repr可以代替str,所以每个类最好有一个repr函数。这样能保证始终类到字符串有一个有效的自定义转换方式。
5.列表以及字典等容器总是会使用 repr 方法。即使你显式的调用 str 方法,也是如此。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值