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