考虑以下代码:
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
>>>
答案 0 :(得分:0)
正如@ user2864740在评论中所说:
在Python 3中,根据documentation,
<,< =,>和> =运算符将在任何操作数是复数时引发TypeError异常,对象具有无法比较的不同类型,或其他没有定义排序的情况。
在Python 2中,
<,< =,>和> =运算符将在任何操作数是复数时引发TypeError异常。 CPython实现细节:除数字外的不同类型的对象按其类型名称排序;不支持正确比较的相同类型的对象按其地址排序。
因为类都是相同的类型(types.ClassType
),class1 < class2
将取决于两个类对象的内存地址恰好是什么。