Antoon Pardon wrote: > Op 2005-10-20, Steve Holden schreef <[EMAIL PROTECTED]>: > >>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. > Sorry, I thought that was the meaning of "The problem now is that the cmp protocol has no way to indicate two objects are incomparable". > >>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. > Ergo: use rich comparisons.
regards Steve -- Steve Holden +44 150 684 7255 +1 800 494 3119 Holden Web LLC www.holdenweb.com PyCon TX 2006 www.python.org/pycon/ -- http://mail.python.org/mailman/listinfo/python-list