Python 特殊方法“cmp”不起作用

Python 特殊方法“cmp”不起作用,python,Python,这个特殊的工作不起作用。说出以下代码: class Test(): def __cmp__(self, other): return False t1 = Test() t2 = t1 print t2 == t1 我应该得到False,因为cmp总是返回False。但实际上,python对我来说是正确的 任何建议?\uuuuu cmp\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

这个特殊的工作不起作用。说出以下代码:

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

t1 = Test()
t2 = t1

print t2 == t1
我应该得到False,因为cmp总是返回False。但实际上,python对我来说是正确的

任何建议?

\uuuuu cmp\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。返回False实际上会使其与所有内容进行比较,因为False的整数值为0


还要注意的是_cmp__在Python3中被弃用并被忽略。您应该实现uuu eq_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。如果你运行它,你会得到_ucmp__;正好1个参数2。谢谢,丹尼尔,我已经修改了我的问题。我只是错过了第二个参数。不知道为什么投票会结束,这不是一个好问题,但也不是离题。嗨,Lennart,我正在使用2.6.2,只是使用cmp来学习Python的特殊方法。同样,您是对的,这个方法应该有两个参数。我更新了我的问题。嗨,勒纳特,你说得对。如果让cmp始终返回1或-1,我将通过t1==t2得到False,反之,如果让cmp返回0或False,将通过t1==t2得到True。@Geoffrey:不仅仅是t1==t2。t1==“whatever”也将返回True-是的,你是对的。我再次感到奇怪的是,为什么我会通过0==t1实现。我想我应该通过0==t1得到False。因为0应该从对象继承,对象应该在这里调用。\uuuuCMp\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。在这种情况下,将以相反的顺序再次尝试比较。
class Test():
      def __cmp__(self, other):
           return -1