您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

蟒蛇喜欢用丰富的比较功能__eq____lt____ne__等),但如果这些都不存在,这回退到使用比较单一功能__cmp__在Python 3中删除):

这些是所谓的“丰富比较”方法,在__cmp__()下面优先于比较运算符。

Python 2的整数类型不实现丰富的比较功能

PyTypeObject PyInt_Type = {
    ...
    (cmpfunc)int_compare,                       /* tp_compare */
    ...
    0,                                          /* tp_richcompare */

在Python 3中,整数类型(现在很长)仅实现了丰富的比较功能,因为Python 3放弃了对以下内容支持__cmp__

PyTypeObject PyLong_Type = {
    ...
    long_richcompare,                           /* tp_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
python 2022/1/1 18:46:22 有332人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶