在Python 2.7,我定義了一個空的新式類:的Python:默認比較
In [43]: class C(object): pass
....:
然後創建新類的實例列表:
In [44]: c = [C() for i in xrange(10)]
然後嘗試排序列表:
In [45]: sorted(c)
Out[45]:
[<__main__.C object at 0x1950a490>,
<__main__.C object at 0x1950a4d0>,
...
<__main__.C object at 0x1950aad0>]
令人驚訝的是,排序不抱怨,即使我沒有定義一種方法來比較instan的C
CES:
In [46]: dir(C())
Out[46]:
['__class__',
'__delattr__',
'__dict__',
'__doc__',
'__format__',
'__getattribute__',
'__hash__',
'__init__',
'__module__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__sizeof__',
'__str__',
'__subclasshook__',
'__weakref__']
究竟是什麼發生的事情,並什麼是這樣做的理由 - 可以說是驚人的 - 行爲?
(+1)爲鏈接和報價。 – NPE 2011-06-06 13:59:58
+1,你在評論中是完全正確的我被兩個對象和其他比較運算符的等同性誤導了,謝謝你計算出我的錯誤 – mouad 2011-06-06 14:19:33
更新後的鏈接http://docs.python.org/reference/expressions.html #未在 – 2016-03-22 14:00:01