在交互式模式下,类中同时实现__str__()和__repr__()方法:
直接输入实例名称显示repr返回的类容;
用print打印实例名称显示str返回的内容;
>>> class Test:
... def __repr__(self):
... return 'Test -> return repr'
... def __str__(self):
... return 'Test -> return str'
...
>>> t = Test()
>>> t
Test -> return repr
>>> print(t)
Test -> return str
在交互式模式下,如果只实现了__repr__()方法则:
直接输入实例名称和print打印都显示repr返回的内容。
>>> class Test:
... def __repr__(self):
... return 'Test -> return repr'
...
>>> t = Test()
>>> t
Test -> return repr
>>> print(t)
Test -> return repr
在交互式模式下,如果只实现了__str__()方法则:
直接输入实例名称返回的是对象地址信息。
而print打印输出的是str返回的内容。
>>> class Test:
... def __str__(self):
... return 'Test -> return str'
...
>>> t = Test()
>>> t
<__main__.Test object at 0x00000234355D43C8>
>>> print(t)
Test -> return str
总结:
一般情况下,让repr成为str的一个别名输出相同的内容就可以了。
>>> class Test:
... def __str__(self):
... return 'Test -> return str'
... __repr__ = __str__
...
>>> t = Test()
>>> t
Test -> return str
>>> print(t)
Test -> return str