Курс 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. Комментарии в Python
  2. Удаление дубликатов из списка с помощью dict.fromkeys
  3. Аргумент по умолчанию
  4. Списковое включение в Python
  5. Цепные операции в Python
  6. Работа со слайсами
  7. Модуль functools в Python
  8. Метод Self в Python
  9. Конвертация коллекций в Python.
  10. Переопределение метода __lshift__
  11. Поиск уникальных элементов строкой в Python
  12. enumerate() в Python для работы с индексами
  13. Замена подстроки
  14. Поиск файлов по шаблону
  15. Использование модуля __future__
  16. Работа с итераторами в Python
  17. Официальный канал Python в Telegram
  18. Объединение словарей в Python
  19. Функция enumerate в Python
  20. Генератор надежных паролей
  21. Декоратор для группы пользователей в Django
  22. Поиск элементов BeautifulSoup
  23. Оператор in для проверки наличия элемента
  24. Преобразование PowerPoint в PDF.
  25. Преобразование строки в число
  26. Тест скорости набора текста на Python
  27. Руководство по использованию Colorama
  28. Функции высшего порядка в Python
  29. Просмотр атрибутов и методов класса
  30. Конвертация коллекций в Python
  31. Оптимизация памяти с slots
  32. Сортировка слиянием
  33. Получение срезов итераторов
  34. Срез списка в Python
  35. Использование функции enumerate()
  36. Измерение времени выполнения кода
  37. Определение объема памяти объекта
  38. Переменная с нижним подчеркиванием
  39. Генераторы и сеты в Python
  40. Нарезка списков в Python
  41. Многострочные строки в Python
  42. Измерение времени выполнения в Python
  43. Проверка переменных окружения в Python
  44. Инверсия списков и строк в Python
  45. Присвоение и ссылки
  46. Методы list в Python

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

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