Загружаем изображение…
Знаете, что Python умеет автоматически генерировать все операторы сравнения класса?

Обычно для полноценного сравнения объектов приходится вручную реализовывать __lt__, __le__, __gt__, __ge__, __eq__.

Это не только шаблонный код, но и источник трудноуловимых ошибок, когда логика сравнения расходится между методами.
def __lt__(self, other): ...
def __eq__(self, other): ...


functools.total_ordering генерирует остальные методы автоматически, если определить базовые операции сравнения.
@total_ordering
class Version:


После этого объекты начинают корректно работать с sorted, min, max, heapq и любыми алгоритмами порядка.
v1 < v2
v1 >= v2


Это особенно полезно для версий, приоритетов, доменных сущностей и любых custom-типов с отношением порядка.
sorted(versions)

total_ordering позволяет централизовать логику сравнения в одном месте и исключить дублирование операторов в production-коде.

Python Ready | #совет
Просмотры: 304
Открыть в MAX Сообщить о неточности

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти