> with the same hash value. > That is, you should define __hash__ and one of (__cmp__ or __eq__). > __neq__ (inequality) isn't required nor used by dict/set implementation. > (Anyway, Python will transform a!=b into not(a==b), if __neq__ isn't > defined). Neither <, <=, >, >= are used.
No, it won't: http://docs.python.org/ref/customization.html#l2h-190 """ There are no implied relationships among the comparison operators. The truth of x==y does not imply that x!=y is false. Accordingly, when defining __eq__(), one should also define __ne__() so that the operators will behave as expected. """ --------------------- class Foo(object): def __eq__(self, other): print "__eq__" return id(self) == id(other) Foo() == Foo() Foo() != Foo() --------------- will give you only one call to __eq__ Diez -- http://mail.python.org/mailman/listinfo/python-list