Курс Python → Декоратор total_ordering для сравнения объектов

Для упрощения использования операторов сравнения в Python можно воспользоваться декоратором functools.total_ordering. Этот декоратор позволяет автоматически создать все операторы сравнения (__eq__, __ne__, __lt__, __le__, __gt__, __ge__>) на основе реализации лишь двух из них.

Например, если у вас есть класс Point с атрибутами x и y, и вы хотите сравнивать объекты этого класса, то достаточно реализовать методы __eq__ и __lt__>. Затем применить декоратор @functools.total_ordering к классу, чтобы автоматически получить остальные методы сравнения.


from functools import total_ordering

@total_ordering
class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __eq__(self, other):
        return self.x == other.x and self.y == other.y

    def __lt__(self, other):
        return self.x < other.x or (self.x == other.x and self.y < other.y)

Теперь объекты класса Point могут быть сравниваемыми с помощью всех операторов сравнения. Например:


p1 = Point(1, 2)
p2 = Point(3, 4)

print(p1 == p2) # False
print(p1 != p2) # True
print(p1 < p2) # True
print(p1  p2) # False
print(p1 >= p2) # False

Таким образом, использование декоратора functools.total_ordering позволяет существенно упростить работу с операторами сравнения в Python, делая код более читаемым и компактным.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Исключение NotImplementedError
  2. Проверка типа объекта в Python
  3. Оператор continue в Python
  4. Использование type hints
  5. Установка и использование pyshorteners
  6. Форматирование заголовков в Python
  7. Нан-рефлексивность в Python
  8. Избегайте двойного подчеркивания
  9. Генераторы в Python
  10. Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
  11. Импортирование в Python
  12. Разбиение строки в Python
  13. Создание .exe файла с pyinstaller
  14. Оператор @ для умножения матриц
  15. Применение функции map() в Python
  16. Измерение времени выполнения кода
  17. Использование эмодзи в Python
  18. Особенности ключей словаря в Python
  19. Обезопасьте ввод данных
  20. Принципы LSP и ISP в Python
  21. Функция divmod() в Python
  22. Копирование объектов в Python
  23. Управление доступом к модулю
  24. Декоратор защиты анонимных пользователей
  25. Изменение списка срезом
  26. Избегание изменяемых аргументов
  27. Проверка файла .py на синтаксис.
  28. Список переменных в Python
  29. Оператор «not» в Python
  30. Сортировка с помощью key
  31. Модуль pprint
  32. Распаковка аргументов в Python
  33. Синхронизация потоков с time.sleep()
  34. Асинхронное программирование с asyncio
  35. Переопределение оператора % для объектов
  36. Обновление ключей в Python
  37. Функции min(), max(), sum()
  38. Нахождение максимального значения и его индекса в списке
  39. Подписка на Kaspersky Team
  40. Преобразование строк в числа с плавающей запятой
  41. Переопределение метода xor в Python
  42. Создание класса очереди
  43. Измерение времени выполнения кода
  44. Модуль antigravity: генерация координат
  45. Метод gt в Python
  46. Разделение строки с регулярными выражениями
  47. Разделение строк в Python

Marketello читают маркетологи из крутых компаний

Marketello.org — площадка для начинающих интернет-маркетологов, которая поможет прокачать твои навыки.
Много практики, в меру теории. Уникальный подход к обучению.
Присоединяйся!
Для авторов и партнёров
Facebook: https://fb.com/dmitriy.komarovskiy
© 2017-2025, Все права защищены.