[prev in list] [next in list] [prev in thread] [next in thread]
List: python-list
Subject: Re: Would there be support for a more general cmp/__cmp__
From: Antoon Pardon <apardon () forel ! vub ! ac ! be>
Date: 2005-10-20 11:13:28
Message-ID: slrndleuuo.1lo.apardon () rcpc42 ! vub ! ac ! be
[Download RAW message or body]
Op 2005-10-20, Steve Holden schreef <steve@holdenweb.com>:
> Antoon Pardon wrote:
>> I was wondering how people would feel if the cmp function and
>> the __cmp__ method would be a bit more generalised.
>>
>> 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.
>>
>> So I thought that either cmp could return None in this
>> case or throw a specific exception. People writing a
>> __cmp__ method could do the same.
>>
> The current behaviour is, of course, by design: """The operators <, >,
>==, >=, <=, and != compare the values of two objects. The objects need
> not have the same type. If both are numbers, they are converted to a
> common type. Otherwise, objects of different types always compare
> unequal, and are ordered consistently but arbitrarily."""
>
> Personally I'm still not convinced that your requirement reflects a
> substantial use case (but then I'm getting used to that ;-). Just
> because an ordering is partial that doesn't mean that two instances of a
> class shouldn't be compared.
I'm not suggesting that they shouldn't be compared.
> What would you have Python do when the programmer tries to perform an
> invalid comparison (i.e. what are the exact semantics imposed when
> __cmp__() returns None/raises an exception)?
My appologies, I should have been more complete.
What I want is a way to say that all of the following are False:
a < b, a <= b, a == b, a > b, a >= b
and that only the following is True:
a != b
So if a coder writes one of the comparisons and as a result python
calls the __cmp__ method on one of the terms which would return
either None or raise an exceptions I would like it to reflect
the above behaviour.
--
Antoon Pardon
--
http://mail.python.org/mailman/listinfo/python-list
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic