Python 3 __cmp__ semantic change?

Steve Holden steve at holdenweb.com
Thu Nov 20 16:45:42 EST 2008


Johannes Bauer wrote:
> Inyeol.Lee at gmail.com schrieb:
>> On Nov 20, 1:18 pm, Johannes Bauer <dfnsonfsdu... at gmx.de> wrote:
>>> Hello group,
>>>
>>> I'm porting some code of mine to Python 3. One class has the __cmp__
>>> operator overloaded, but comparison doesn't seem to work anymore with that:
>>>
>>> Traceback (most recent call last):
>>>   File "./parse", line 25, in <module>
>>>     print(x < y)
>>> TypeError: unorderable types: IP() < IP()
>>>
>>> Was there some kind of semantic change?
>> Overload __lt__ method.
> 
> Well, of course I could do that, but the python doc says:
> 
> "Called by comparison operations if rich comparison (see above) is not
> defined."
> http://www.python.org/doc/2.5.2/ref/customization.html
> 
> And my code works just fine with 2.5 - only on 3.0 it doesn't work
> anymore. Why is that?

Well the Python 2.5 documentation can't be regarded as a reliable guide
to what to expect in 3.0 ...

You will observe that __cmp__ no longer appears in the index:

http://docs.python.org/dev/3.0/genindex-_.html

regards
 Steve
-- 
Steve Holden        +1 571 484 6266   +1 800 494 3119
Holden Web LLC              http://www.holdenweb.com/




More information about the Python-list mailing list