Python 2: различное значение ключевого слова «in» для множеств и списков
Рассмотрим этот фрагмент:
class SomeClass(object):
def __init__(self, someattribute="somevalue"):
self.someattribute = someattribute
def __eq__(self, other):
return self.someattribute == other.someattribute
def __ne__(self, other):
return not self.__eq__(other)
list_of_objects = [SomeClass()]
print(SomeClass() in list_of_objects)
set_of_objects = set([SomeClass()])
print(SomeClass() in set_of_objects)
который оценивает:
True
False
Может кто-нибудь объяснить, почему ключевое слово «in» имеет другое значение для наборов и списков? Я ожидал бы, что оба вернут True, особенно когда у тестируемого типа определены методы равенства.