[Python-Dev] Why doesn't `functools.total_ordering` use the existing ordering methods?

Lennart Regebro regebro at gmail.com
Tue Apr 26 09:10:10 CEST 2011


On Mon, Apr 25, 2011 at 20:43, cool-RR <cool-rr at cool-rr.com> wrote:
> Hello,
> Today I was trying to use `total_ordering` for the first time. I was
> expecting that in order to implement e.g. `x > y` it would do `not x < y and
> not x == y`, assuming that `__lt__`  and `__eq__` are defined. But I see it
> just does `y < x`, which is problematic. For example if you have a class
> that is decorated by `total_ordering`, and implements only `__lt__`  and
> `__eq__`, then trying to do `x < y` will result in infinite recursion.
> Why not have `total_ordering` work in the way I suggested?

This has been partly fixed for Python 3.2, although it can still
happen if you compare two types that both use the total_ordering
decorator. See http://bugs.python.org/issue10042 .

-- 
Lennart Regebro: http://regebro.wordpress.com/
Porting to Python 3: http://python3porting.com/


More information about the Python-Dev mailing list