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

Reply via email to