【发布时间】:2014-11-03 22:44:22
【问题描述】:
我创建了一个新的 Python 对象,如下所示
class Mylist(list):
def __cmp__(self,other):
if len(self)>len(other):
return 1
elif len(self)<len(other):
return -1
elif len(self)==len(other):
return 0
我的意图是,当比较两个Mylist对象时,具有大量项目的对象应该更高。
c=Mylist([4,5,6])
d=Mylist([1,2,3])
运行上述代码后,c 和 d 应该相等(c==d True)。但我得到了
>>> c==d
False
>>> c>d
True
>>>
他们像 list 对象本身一样被比较。我做错了什么?
【问题讨论】:
-
你的
__cmp__方法永远不会被调用。 -
不 cmp
-
似乎
list实现了所有丰富的比较运算符,即__lt__、__ge__、__eq__等,因此调用这些运算符而不是__cmp__。猜猜你必须覆盖所有这些。
标签: python python-2.7