trying to come up with a more concise description of the rich comparision machinery for pyref.infogami.com, I stumbled upon an oddity that I cannot really explain:
in the attached example below, why is the rich comparision machinery doing *four* attempts to use __eq__ in the old- class case? </F> $ more test.py class old: def __init__(self, name): self.name = name def __repr__(self): return self.name def __eq__(self, other): print "EQ", self, other return NotImplemented def __cmp__(self, other): print "CMP", self, other return 0 class new(object): def __init__(self, name): self.name = name def __repr__(self): return self.name def __eq__(self, other): print "EQ", self, other return NotImplemented def __cmp__(self, other): print "CMP", self, other return 0 a = old("A") b = old("B") print a == b a = new("A") b = new("B") print a == b $ python test.py EQ A B EQ B A EQ B A EQ A B CMP A B True EQ A B EQ B A CMP A B True _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com