Considere la siguiente:Python 2: diferente significado de la 'en' palabra clave para los conjuntos y listas
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 será evaluado:
True
False
¿Puede alguien explicar por qué el 'en' palabra clave tiene un significado diferente para conjuntos y listas? Hubiera esperado que ambas devolvieran True, especialmente cuando el tipo que se está probando tiene métodos de igualdad definidos.
Ver http://stackoverflow.com/questions/7549709/unexpected-behavior-for-python-set-contains ... por cierto, en Python 3 al ejecutar este código se insinúa lo que está sucediendo: "TypeError: tipo insabrable: ' SomeClass '" – DSM
Gracias a todos, todo está claro ahora. – mskel
Por cierto, usted sabe que su 'someattribute' aquí es un atributo ** class ** y no un atributo ** instancia **, ¿verdad? * Has * oído hablar de '__init__', ¿verdad? –