比较类型在Python 2中做了什么?

时间:2018-01-22 03:34:06

标签: python-2.x

考虑以下代码:

class class1:
    pass

class class2:
    pass

class1 > class2

在Python 3中,我(正确地)收到此错误

TypeError: '>' not supported between instances of 'type' and 'type'

Python 2中会发生什么?

>>> class1 > class2
False
>>> class2 > class1
True
>>>

1 个答案:

答案 0 :(得分:0)

正如@ user2864740在评论中所说:

在Python 3中,根据documentation

  

<,< =,>和> =运算符将在任何操作数是复数时引发TypeError异常,对象具有无法比较的不同类型,或其他没有定义排序的情况。

在Python 2中,

  

<,< =,>和> =运算符将在任何操作数是复数时引发TypeError异常。   CPython实现细节:除数字外的不同类型的对象按其类型名称排序;不支持正确比较的相同类型的对象按其地址排序。

因为类都是相同的类型(types.ClassType),class1 < class2将取决于两个类对象的内存地址恰好是什么。