4

__cmp__メソッドとに対して独自のメソッドを定義しないとどうなり__str__ますか?

4

2 に答える 2

6

__cmp__()、__eq__()、または __ne__() 操作が定義されていない場合、クラス インスタンスはオブジェクト ID (「アドレス」) によって比較されます。

詳細については、object.__cmp__(self, other) in Pythonを参照してください。さらに、 Python の特別な (魔法の) メソッドを参照できます。

于 2012-04-19T05:22:39.543 に答える
6

何も__str__定義されていない場合、メモリ アドレスが<__main__.A object at 0x165aa90>.

操作が定義されていない場合__cmp__()、クラス インスタンスはオブジェクト ID、つまりメモリ アドレス ( 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)
于 2012-04-19T05:24:34.783 に答える