特殊作品__cmp__
不起作用。说出以下代码:
class Test():
def __cmp__(self, other):
return False
t1 = Test()
t2 = t1
print t2 == t1
我应该得到False,因为 cmp 总是返回False。但实际上,python正在为我打印True。
有什么建议吗?
答案 0 :(得分:5)
__cmp__
应该返回-1
,0
或1
,表明它低于,等于或高于other
。返回False
实际上会使其与所有内容进行比较,因为False
的整数值为0
。
class Test():
def __cmp__(self, other):
return -1
另请注意,{3}已被弃用,在Python 3中会被忽略。您应该实现__cmp__
而另一个所谓的rich comparison operators。