[Python-Dev] rich comparisions and old-style classes (original) (raw)

Fredrik Lundh fredrik at pythonware.com
Sun Apr 30 08:13:40 CEST 2006


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?

$ 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



More information about the Python-Dev mailing list