__str__
, __repr__
两者的目的都是为了显式的显示对象的一些必要信息,方便查看和调试。__str__
被print
默认调用,__repr__
被控制台输出时默认调用。即,使用__str__
控制用户展示(面向用户),使用__repr__
控制调试展示(面向程序员)。
注意:
默认的 __str__
和 __repr__
方法,打印的是对象的来源以及对应的内存地址
示例:
class Test:
def __init__(self):
self.name = "test"
if __name__ == "__main__":
A = Test()
print(A)
>> <__main__.Test object at 0x7f9aaf9d2750>
- 触发
__str__
的场景- print(object)
- ‘%s’ %()
- str(object)
- 触发
__repr__
的场景- repr(object)
- ‘%r’%(object)
示例:
class Test:
def __init__(self):
self.name = "test"
def __repr__(self):
return "__repr__"
def __str__(self):
return "__str__"
if __name__ == "__main__":
A = Test()
print(A) >>__str__
print('%s'%(A)) >>__str__
print(str(A)) >>__str__
print(repr(A)) >>__repr__
print('%r'%(A)) >>__repr__