Am 13.05.2013 01:23, schrieb Mr. Joe: > I seem to stumble upon a situation where "!=" operator misbehaves in > python2.x. Not sure if it's my misunderstanding or a bug in python > implementation. Here's a demo code to reproduce the behavior - > """
Python 2.7 doesn't use the negation of __eq__ when your class doesn't provide a __ne__ function. Just add a print() to your __eq__ method and you'll notice the different. You have to provide both: class DemoClass(object): def __init__(self, val): self.val = val def __eq__(self, other): if not isinstance(other, DemoClass): return NotImplemented return self.val == other.val def __ne__(self, other): if not isinstance(other, DemoClass): return NotImplemented return self.val != other.val or def __ne__(self, other): result = self.__eq__(other) if result is NotImplemented: return NotImplemented return not result -- http://mail.python.org/mailman/listinfo/python-list