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
← Все записи: Модули collections и functools
Поддержать проект