Problem comparing object graphs and trees
raphael.marvie at gmail.com
raphael.marvie at gmail.com
Fri Dec 15 09:07:48 EST 2006
I am not drunk but should have rtfm.
Sorry and Thanks.
r.
On Dec 15, 3:04 pm, Peter Otten <__pete... at web.de> wrote:
> raphael.mar... at gmail.com 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
More information about the Python-list
mailing list