Python 2: significado diferente de la palabra clave 'in' para conjuntos y listas
Considere este fragmento:
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)
que evalúa a:
True
False
¿Alguien puede explicar por qué la palabra clave 'in' tiene un significado diferente para conjuntos y listas? Hubiera esperado que ambos devolvieran True, especialmente cuando el tipo que se está probando tiene métodos de igualdad definidos.