特殊方法__cmp__不起作用

时间:2013-07-09 10:56:53

标签: python

特殊作品__cmp__不起作用。说出以下代码:

class Test():
      def __cmp__(self, other):
           return False

t1 = Test()
t2 = t1

print t2 == t1

我应该得到False,因为 cmp 总是返回False。但实际上,python正在为我打印True。

有什么建议吗?

1 个答案:

答案 0 :(得分:5)

__cmp__应该返回-101,表明它低于,等于或高于other。返回False实际上会使其与所有内容进行比较,因为False的整数值为0

class Test():
      def __cmp__(self, other):
           return -1

另请注意,{3}已被弃用,在Python 3中会被忽略。您应该实现__cmp__而另一个所谓的rich comparison operators