[Python-Dev] Rich comparison confusion
Skip Montanaro
skip@mojam.com (Skip Montanaro)
2001年1月17日 09:17:39 -0600 (CST)
I'm a bit confused about Guido's rich comparison stuff. In the description
he states that __le__ and __ge__ are inverses as are __lt__ and __gt__.
>From a boolean standpoint this just can't be so. Guido mentions partial
orderings, but I'm still confused. Consider this example: Objects of type A
implement rich comparisons. Objects of type B don't. If my code looks like
a = A()
b = B()
...
if b < a:
...
My interpretation of the rich comparison stuff is that either
1. Since b doesn't implement rich comparisons, the interpreter falls
back to old fashioned comparisons which may or may not allow the
comparison of B objects and A objects.
or
2. The sense of the inequality is switched (a > b) and the rich
comparison code in A's implementation is called.
That's my reading of it. It has to be wrong. The inverse comparison should
be a >= b, not a > b, but the described pairing of comparison functions
would imply otherwise.
I'm sure I'm missing something obvious or revealing some fundamental failure
of my grade school education. Please explain...
Skip