Python:__ cmp__和__str__?

ali*_*cew 4 python methods

如果你没有定义自己的方法会发生什么__cmp____str__

Dra*_*uan 6

如果未定义__cmp __(),__ eq __()或__ne __()操作,则通过对象标识("address")比较类实例.

有关更多详细信息:请参阅Python中的object .__ cmp __(self,other).您可以在Python中获得进一步的参考特殊(魔术)方法.


wim*_*wim 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)
Run Code Online (Sandbox Code Playgroud)