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.

Respuestas a la pregunta(6)

Su respuesta a la pregunta