Would there be support for a more general cmp/__cmp__
duncan.booth at invalid.invalid
Thu Oct 20 11:21:46 CEST 2005
Antoon Pardon wrote:
> Op 2005-10-20, Duncan Booth schreef <duncan.booth at invalid.invalid>:
>> Antoon Pardon wrote:
>>> The problem now is that the cmp protocol has no way to
>>> indicate two objects are incomparable, they are not
>>> equal but neither is one less or greater than the other.
>> If that is the case then you implement __eq__ and __ne__ to return
>> True/False and make cmp throw an exception. I don't see any need to
>> extend the cmp protocol.
> That is not sufficient. There are domains where an order exists, but
> not a total order. So for some couples of elements it is possible to
> say one is less than the other, but not for all such couples.
> Your solution wouldn't allow for such a case.
I don't see why not. If an ordering exists then __cmp__ returns a result
otherwise it throws an exception. So long as you define __eq__ and __ne__,
__cmp__ is never called when checking for equality.
More information about the Python-list