在 Python class 中分别实现每个丰富的排序方法的快捷方式?
Shortcut to implementing every single rich ordering method in a Python class individually?
我有一个 Python class,我想通过它的一个属性来支持 rich ordering。我当然可以简单地实现所有神奇的排序方法,如 __lt__
、__le__
等,并将该属性作为键,但这似乎有点麻烦和重复。有没有一种方法可以简单地将该属性定义为排序键一次并让 Python 自动计算出各个比较?
如果您使用的是 Python3.2 或更高版本,则可以使用 functools.total_ordering.
Given a class defining one or more rich comparison ordering methods,
this class decorator supplies the rest. This simplifies the effort
involved in specifying all of the possible rich comparison operations:
The class must define one of __ lt__(), __ le__(), __ gt__(), or
__ ge__(). In addition, the class should supply an __ eq__() method.
我有一个 Python class,我想通过它的一个属性来支持 rich ordering。我当然可以简单地实现所有神奇的排序方法,如 __lt__
、__le__
等,并将该属性作为键,但这似乎有点麻烦和重复。有没有一种方法可以简单地将该属性定义为排序键一次并让 Python 自动计算出各个比较?
如果您使用的是 Python3.2 或更高版本,则可以使用 functools.total_ordering.
Given a class defining one or more rich comparison ordering methods, this class decorator supplies the rest. This simplifies the effort involved in specifying all of the possible rich comparison operations:
The class must define one of __ lt__(), __ le__(), __ gt__(), or __ ge__(). In addition, the class should supply an __ eq__() method.