Курс 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. Применение функции map() в Python
  2. Управление памятью в numpy.
  3. Библиотека itertools: объединение списков
  4. Генератор чисел Фибоначчи
  5. Метод Self в Python
  6. Python enumerate() функции
  7. Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
  8. Значения по умолчанию в Python
  9. Идентификатор объекта в Python
  10. Кортеж в Python: создание и использование
  11. Манипуляция формой массива в Numpy
  12. Извлечение аудио из видео
  13. Множества и frozenset
  14. Работа с файлами в Python
  15. Управление асинхронными задачами на Python.
  16. Преобразование чисел в восьмеричную строку
  17. Вывод букв строки в Python
  18. Конвертация изображений в PDF
  19. Перевернуть список в Python
  20. Проверка версии Python
  21. Генераторы в Python
  22. Метод join() для объединения элементов строки
  23. Проверка кортежей.
  24. JSON в Python: модуль, dump, dumps, load
  25. Функции any() и all() в Python
  26. Простой калькулятор Python
  27. Срез в Python
  28. Методы обработки строк в Python
  29. Обработка ошибок в JSON данных
  30. Метод __imod__ для Python
  31. Метаклассы в Python
  32. Функции в одну строку
  33. Модуль functools в Python
  34. Форматирование строк в Python
  35. Python Enumerate
  36. Функция reduce() в Python
  37. Эффективная конкатенация строк с использованием join()
  38. Функция all() в Python
  39. Создание вложенного генератора
  40. split() — разделение строки
  41. Создание словарей с defaultdict()
  42. Работа с итераторами в Python
  43. Генерация QR-кодов с библиотекой qrcode
  44. ChainMap избыточные ключи
  45. Транспонирование матрицы в Python
  46. Конструктор в Python
  47. Метод rlshift для битового сдвига

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

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