单独在Python类中实现每个单独的富订序方法的快捷方式?

时间:2018-01-23 14:37:03

标签: python class oop magic-methods

我有一个Python类,我希望通过其中一个属性来支持rich ordering。我当然可以简单地实现所有魔术排序方法,如__lt____le__等,以该属性为关键,但这似乎有点麻烦和重复。有没有办法我可以简单地将该属性定义为一次排序键,并让Python自动找出个别比较?

1 个答案:

答案 0 :(得分:2)

如果您使用的是Python3.2或更高版本,则可以使用functools.total_ordering

  

给定一个定义一个或多个丰富的比较排序方法的类,   这个类装饰器提供其余的。这简化了工作量   参与指定所有可能的丰富比较操作:

     

该类必须定义__ lt __(),__ le __(),__ gt __()或其中之一   __ ge __()。此外,该类应提供__ eq __()方法。