【发布时间】:2011-06-06 13:31:25
【问题描述】:
在 Python 2.7 中,我定义了一个空的新式类:
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>]
令人惊讶的是,排序没有抱怨,即使我还没有定义一种方法来比较 C 的实例:
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__']
那里到底发生了什么,这种行为的基本原理是什么——可以说是令人惊讶的——行为?
【问题讨论】:
标签: python object comparison