Если у меня есть список объектов, я могу использовать метод __cmp__
для переопределения объектов. Это влияет на работу оператора ==
и функцию item in list
. Тем не менее, это не влияет на функцию item in set
- мне интересно, как я могу изменить объект MyClass, чтобы я мог переопределить поведение, как набор сравнивает элементы.
Например, я хотел бы создать объект, который возвращает True в трех операторах печати внизу. В настоящий момент последний оператор print возвращает 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