【发布时间】:2018-07-08 07:18:39
【问题描述】:
>>> (1).__str__!=(2).__str__
True
是否有任何技术原因使它们成为单独的对象而不是引用单个对象?好像会更有效率
【问题讨论】:
标签: cpython
>>> (1).__str__!=(2).__str__
True
是否有任何技术原因使它们成为单独的对象而不是引用单个对象?好像会更有效率
【问题讨论】:
标签: cpython
那是因为你没有得到__str__ 函数,而是它的方法包装器。
>>> x = (1).__str__
>>> type(x)
<class 'method-wrapper'>
>>> x()
'1'
>>> x.__self__
1
>>> x = (2).__str__
>>> x()
'2'
>>> x.__self__
2
方法包装器是一个保留对self 的引用的对象。所以每个实例都必须不同。
更多详情,请查看this question。
【讨论】: