str(object)
返回object.__str__()
,这是对象的“非正式”或可打印的字符串表示形式。
但我认为这是错误的:
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help.
In [1]: class A:
...: def __str__(self):
...: return 'a'
...:
In [2]: def f():
...: return 'b'
...:
In [3]: a=A()
In [4]: a.__str__=f
In [5]: a.__str__()
Out[5]: 'b'
In [6]: str(a)
Out[6]: 'a'
In [7]: repr(a)
Out[7]: '<__main__.A object at 0x7ffd387c71d0>'
根据文档, str(a)
未返回a.__str__()
。
这种行为是否记录在任何地方?或者这是一个错误?