如果您没有为方法__cmp__
和__str__
定义自己的方法会怎样?
答案 0 :(得分:6)
如果没有定义__cmp __(),__ eq __()或__ne __()操作,则为 实例按对象标识(“地址”)进行比较。
有关详细信息,请参阅object.__cmp__(self, other) in Python。您可以获得进一步的参考Special (magic) methods in Python。
答案 1 :(得分:6)
如果未定义__str__
,您将获得具有内存地址的默认值,例如<__main__.A object at 0x165aa90>
。
如果未定义__cmp__()
操作,则通过对象标识(即内存地址(docs))比较类实例。
示例:
>>> 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)