>>> (1).__str__!=(2).__str__
True
将它们做成单独的对象而不是引用单个对象是否有任何技术原因?似乎会更有效率
答案 0 :(得分:2)
那是因为您没有得到__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。