我有一个Python类,我希望通过其中一个属性来支持rich ordering。我当然可以简单地实现所有魔术排序方法,如__lt__
,__le__
等,以该属性为关键,但这似乎有点麻烦和重复。有没有办法我可以简单地将该属性定义为一次排序键,并让Python自动找出个别比较?
答案 0 :(得分:2)
如果您使用的是Python3.2或更高版本,则可以使用functools.total_ordering。
给定一个定义一个或多个丰富的比较排序方法的类, 这个类装饰器提供其余的。这简化了工作量 参与指定所有可能的丰富比较操作:
该类必须定义__ lt __(),__ le __(),__ gt __()或其中之一 __ ge __()。此外,该类应提供__ eq __()方法。