Курс 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. Генерация чисел с range()
  3. Удаление элементов из списка в Python
  4. Пропуск начальных строк с помощью dropwhile()
  5. ROT13 Шифр Цезаря в Python
  6. Работа с рекламными данными в Pandas
  7. Python itertools combinations() — группировка элементов
  8. Преобразование данных в Python
  9. Игра «Виселица» на Python
  10. Базовые объекты Python
  11. Создание пользовательской коллекции в Python
  12. Библиотека Rich: форматирование текста
  13. Сортировка с помощью параметра key
  14. Вычисление времени выполнения
  15. Преобразование символов в нижний регистр
  16. Атрибуты класса и экземпляра в Python
  17. Подсчет часто встречающихся элементов
  18. Метод rename() для переименования файлов и каталогов
  19. Равенство и идентичность в Python
  20. Создание новых функций с помощью functools.partial
  21. PrettyTable: создание таблицы
  22. Namedtuple в Python
  23. Функция pow() — возвести число в степень
  24. Переопределение метода __and__
  25. Разделение строк методом split()
  26. Отладка утечек памяти в Python
  27. Замена символов в Python
  28. Объединение кортежей в Python
  29. Объединение списков в Python
  30. Метод count() для списка
  31. Поиск простых чисел
  32. Сравнение объектов в Python
  33. Комплексные числа в Python
  34. Python OrderedDict и fromkeys() — работа с словарями
  35. Функция zip() в Python
  36. Блок else в обработке исключений
  37. Метод __int__ в Python
  38. Работа с индексами списков
  39. Многострочные комментарии в Python
  40. Отображение HTML кода в Python
  41. Проверка окончания строки с помощью str.endswith()
  42. Регулярные выражения: метод match
  43. Сложение матриц в NumPy

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

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