What happened to __cmp__() in Python 3.x?

Mark Lawrence breamoreboy at yahoo.co.uk
Sun Aug 16 13:49:16 CEST 2009


Chris Rebert wrote:
> On Sat, Aug 15, 2009 at 8:09 AM, Xavier Ho<contact at xavierho.com> wrote:
>> Hey all,
>>
>> I've recently made my way to Python 3.1 and I'm not seeing __cmp__() in the
>> documentation.
>>
>> Is there a substitution for this special method in 3.1, or do I really have
>> to define all six rich comparison methods to work it out?
> 
> I don't think so. Quoting
> http://docs.python.org/dev/py3k/reference/datamodel.html
> 
> "There are no swapped-argument versions of [the comparison] methods
> (to be used when the left argument does not support the operation but
> the right argument does); rather, __lt__() and __gt__() are each
> other’s reflection, __le__() and __ge__() are each other’s reflection,
> and __eq__() and __ne__() are their own reflection."
> 
> I believe this means you only need to define one method from each of
> the following pairs to get all the operators working:
> * __eq__ or __ne__
> * __lt__ or __gt__
> * __ge__ or __le__
> 
> Cheers,
> Chris
Unfortunately I don't think it's that easy, see.
http://mail.python.org/pipermail/python-list/2008-November/688761.html
The issue referenced is still open.  This of course assumes that I've 
posted the correct link this time!

-- 
Kindest regards.

Mark Lawrence.




More information about the Python-list mailing list