functools.total_ordering
Декоратор класса, который достраивает все операторы сравнения по одному заданному и методу __eq__.
Сигнатура
@functools.total_orderingДостаточно определить __eq__ и один из __lt__, __le__, __gt__, __ge__ — total_ordering сгенерирует остальные. Это экономит код, хотя и немного медленнее ручной реализации всех методов.
from functools import total_ordering
@total_ordering
class Version:
def __init__(self, num):
self.num = num
def __eq__(self, other):
return self.num == other.num
def __lt__(self, other):
return self.num < other.num
print(Version(2) > Version(1)) # True
print(Version(1) <= Version(1)) # True