I am not drunk but should have rtfm. Sorry and Thanks.
r. On Dec 15, 3:04 pm, Peter Otten <[EMAIL PROTECTED]> wrote: > [EMAIL PROTECTED] wrote: > > </pre> > > $ cat cmp.py > > > class A: > > def __init__(self, b): > > self.b = b > > def __cmp__(self, other): > > return self.b == other.b > > > class B: > > pass > > > if __name__ == '__main__': > > b = B() > > a1 = A(b) > > a2 = A(b) > > print a1 == a2 > > print a1 == a1 > > > $ python cmp.py > > False > > False > > </pre> > > > I swear I am not drunk, but why isn't a1 == a2 and worse why isn't a1 > > == a1? Does someone have a clue and can explain to me this suprising > > behavior? (python 2.4.3 on Ubuntu 6.06).__cmp__() must return 0 for equal > > objects: > > >>> 1 .__cmp__(0), 1 .__cmp__(1), 1 .__cmp__(2)(1, 0, -1) > > You might have a look at rich comparison before you proceed: > > >>> class A(object):... def __init__(self, b): > ... self.b = b > ... def __eq__(self, other): > ... return self.b == other.b > ...>>> A(1) == A(1) > True > >>> A(1) == A(42)False > > Peter -- http://mail.python.org/mailman/listinfo/python-list