蟒蛇喜欢用丰富的比较功能(
__eq__,
__lt__,
__ne__等),但如果这些都不存在,这回退到使用比较单一功能(
__cmp__在Python
3中删除):
这些是所谓的“丰富比较”方法,在
__cmp__()下面优先于比较运算符。
在Python
2的整数类型不实现丰富的比较功能:
PyTypeObject PyInt_Type = { ... (cmpfunc)int_compare, ... 0,
在Python
3中,整数类型(现在很长)仅实现了丰富的比较功能,因为Python
3放弃了对以下内容的支持
__cmp__:
PyTypeObject PyLong_Type = { ... long_richcompare,
这就是为什么
(123).__eq__不存在的原因。相反,Python 2
(123).__cmp__在测试两个整数的相等性时会退后一步:
>>> (1).__eq__(2)Traceback (most recent call last): File "<stdin>", line 1, in <module>AttributeError: 'int' object has no attribute '__eq__'>>> (1).__cmp__(2)-1
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)