We're back after a server migration that caused effbot.org to fall over a bit harder than expected. Expect some glitches.

The __lt__ method

__lt__(self, other)

New in version 2.1. These are the so-called rich comparison methods, and are called for comparison operators in preference to __cmp__. The correspondence between operator symbols and method names is as follows: x < y calls x.__lt__(y), x <= y calls x.__le__(y), x==y calls x.__eq__(y), x != y and x <> y call x.__ne__(y), x > y calls x.__gt__(y), and x >= y calls x.__ge__(y).

These methods can return any value, but if the comparison operator is used in a Boolean context, the return value should be interpretable as a Boolean value, else a TypeError will be raised. By convention, False is used for false and True for true.

There are no implied relationships among the comparison operators. The truth of x==y does not imply that x!=y is false. Accordingly, when defining __eq__, one should also define __ne__ so that the operators will behave as expected.

There are no reflected (swapped-argument) versions of these methods (to be used when the left argument does not support the operation but the right argument does); rather, __lt__ and __gt__ are each other’s reflection, __le__ and __ge__ are each other’s reflection, and __eq__ and __ne__ are their own reflection.

Arguments to rich comparison methods are never coerced. A rich comparison method may return NotImplemented if it does not implement the operation for a given pair of arguments.