Если у меня есть список объектов, я могу использовать метод __ cmp __
для переопределения сравнения объектов. Это влияет на работу оператора ==
и на функцию в списке
. Однако, похоже, это не влияет на элемент в функции набора
- мне интересно, как я могу изменить объект 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