Python:__ cmp__和__str__?

时间:2012-04-19 05:18:16

标签: python methods

如果您没有为方法__cmp____str__定义自己的方法会怎样?

2 个答案:

答案 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)