【发布时间】:2012-04-19 05:18:16
【问题描述】:
如果您不为方法__cmp__
和__str__
定义自己的方法会怎样?
【问题讨论】:
如果您不为方法__cmp__
和__str__
定义自己的方法会怎样?
【问题讨论】:
如果没有定义 __cmp__()、__eq__() 或 __ne__() 操作,class 实例按对象标识(“地址”)进行比较。
更多详细信息:请参阅object.__cmp__(self, other) in Python。你可以得到更多的参考Special (magic) methods in Python。
【讨论】:
如果没有定义__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)
【讨论】: