Курс 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. Транспонирование 2D-массива с помощью zip
  2. Отображение графиков в Jupyter с Matplotlib
  3. Иерархия классов в Python
  4. Создание GUI с Tkinter: Entry
  5. Основы Python за 14 дней
  6. Копирование и вставка текста в Python
  7. Управление браузером с Selenium
  8. Область видимости переменных
  9. Декораторы классов
  10. Работа с GitHub в Telegram
  11. Сравнение объектов в Python
  12. Управление контекстом выполнения кода
  13. Создание вложенных циклов for
  14. Использование двоеточия в Python
  15. Операторы увеличения и уменьшения переменной
  16. Встроенные функции Python
  17. Форматирование строк с помощью f-строк
  18. Повторение и перенос строки
  19. Оформление текста в консоли с TermColor
  20. Создание задания в Cron
  21. Управление ресурсами с контекстными менеджерами
  22. CSV строка разделение в Python
  23. Генераторы в Python
  24. Определение объема памяти объекта
  25. Основы слова
  26. Python: отсутствие точек с запятыми
  27. Функциональное программирование.
  28. Условные выражения в Python
  29. Функции min(), max(), sum()
  30. Установка random seed в Python
  31. Подсчет часто встречающихся элементов
  32. Печать комбинаций в Python с Itertools
  33. Методы обработки строк в Python
  34. Хэш-функции в Python
  35. Работа с изображениями PIL
  36. Установка и использование pyshorteners
  37. Мониторинг работы программы Py-spy
  38. Сравнение строк в Python
  39. Просмотр атрибутов и методов класса
  40. Распаковка аргументов в Python
  41. Удаление символа из строки
  42. Резервирование символов в Python
  43. Асинхронное выполнение задач в процессах
  44. Копирование словарей и списков в Python
  45. Логирование с Loguru
  46. Monkey Patching в Python

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

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