python2中int()对象如何在不使用__eq __()方法的情况下使用“ ==”运算符?

python2中int()对象如何在不使用__eq __()方法的情况下使用“ ==”运算符?,第1张

python2中int()对象如何在不使用__eq __()方法的情况下使用“ ==”运算符?

蟒蛇喜欢用丰富的比较功能

__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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5617500.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存