【发布时间】:2011-12-30 00:53:02
【问题描述】:
如果我有一个对象列表,我可以使用__cmp__ 方法覆盖对象进行比较。这会影响== 运算符的工作方式以及item in list 函数。但是,它似乎不会影响 item in set 函数 - 我想知道如何更改 MyClass 对象,以便我可以覆盖集合比较项目的行为。
例如,我想在底部的三个打印语句中创建一个返回 True 的对象。目前,最后一条打印语句返回 False。
class MyClass(object):
def __init__(self, s):
self.s = s
def __cmp__(self, other):
return cmp(self.s, other.s)
instance1, instance2 = MyClass("a"), MyClass("a")
print instance2==instance1 # True
print instance2 in [instance1] # True
print instance2 in set([instance1]) # False
【问题讨论】:
标签: python object set overriding