如果你不为方法__cmp__
和定义你自己的会发生什么__str__
?
问问题
420 次
2 回答
6
如果没有定义 __cmp__()、__eq__() 或 __ne__() 操作,则通过对象标识(“地址”)比较类实例。
有关更多详细信息:请参阅Python 中的 object.__cmp__(self, other)。并且您可以获得更多参考Python 中的特殊(魔术)方法。
于 2012-04-19T05:22:39.543 回答
6
如果没有__str__
定义,您将获得带有内存地址的默认地址,例如<__main__.A object at 0x165aa90>
.
如果未定义任何操作,则通过对象标识(即内存地址(文档__cmp__()
))比较类实例。
例子:
>>> class A(object):
... pass
...
>>> a = A()
>>> b = A()
>>> str(a)
'<__main__.A object at 0x7fcb1df8acd0>'
>>> hex(id(a))
'0x7fcb1df8acd0'
>>> a < b
False
>>> a > b
True
>>> id(a), id(b)
(140510357925072, 140510357925008)
于 2012-04-19T05:24:34.783 回答