Python中 repr 和 str

来自linux中国网wiki
跳到导航 跳到搜索

__str__


__str__方法和__init__方法类似,都是一些特殊方法,所以前后都有双下划线,它用来返回对象的字符串表达式。
当你用print打印输出的时候,Python会调用它的str方法
在我们编写一个新的Python类的时候,总是在最开始位置写一个初始化方法__init__,以便初始化对象,然后会写一个__str__方法,方面我们调试程序

事实上,__str__是被print函数调用的,一般都是return一个什么东西。这个东西应该是以字符串的形式表现的

其实,python里面的对象基本上都默认有个__str__供print函数所用。比如字典里的__str__,见红色部分:

>>> dir({})

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

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

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

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

see also

Python __str__类的特殊方法

python __str__ ,__dict__

Python中__repr__和__str__区别

python: 理解__str__

Python的替换函数——strip(),replace()和re.sub()