[Python-Dev] rich comparisions and old-style classes
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?
</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
More information about the Python-Dev
mailing list