如果您没有定义自己的
__cmp__
和__str__
方法,会发生什么情况呢?如果没有定义__cmp__()、__eq__()或__ne__()操作,类实例将通过对象标识(“地址”)进行比较。
有关更详细的信息,请参阅Python中的object.__cmp__(self, other)。您还可以获取更多参考资料Python中的特殊(魔术)方法。
__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)