Efectivamente evaluaría falso el código que pusiste. Y es que por default checa con el operador is.
Código Python:
Ver originalclass Foo(object):
def __init__(self):
self.data=0
def __eq__(self, other):
if self is other:
return True
else:
return self.data == data
objA = Foo()
objA.data = 1
objB = Foo()
objB.data = 1
mylist = [objA]
Puede ser que tu objeto tenga algun tipo de id, entonces solo necesitarías checar el id. Porque tal vez los otros campos son irrelevantes para determinar la igualdad. Pero eso lo defines tu.