Курс 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. Ускоренный импорт библиотек
  2. Создание пар из последовательностей
  3. Python itertools combinations() — группировка элементов
  4. Метод enumerate() в Python
  5. Перевод текста с Python Translator
  6. Python и Юникод: работа с цифрами
  7. Считывание бинарного файла в Python
  8. Генераторы в Python
  9. SciPy: широкий функционал для математических операций
  10. Оператор += для объединения строк
  11. Функция reversed() в Python
  12. Удаление дубликатов из списка с помощью dict.fromkeys
  13. Выражения-генераторы в Python
  14. Оптимизация сравнения в Python
  15. Модуль itertools: эффективная работа с итераторами
  16. Идентификатор объекта в Python
  17. Работа с изображениями Pillow
  18. Библиотека wikipedia для Python
  19. Генераторы в Python
  20. Удаление URL-адресов в Python
  21. JMESPath в Python
  22. Регистрация на TenChat
  23. Метод __irshift__ для Python
  24. Установка и использование Virtualenv
  25. Метод lt для сортировки объектов
  26. Методы __repr__ и __str__ в Python
  27. Комментарии в Python
  28. Bootle — простой веб-фреймворк
  29. Игра «Угадывание чисел»
  30. Печать календаря в Python
  31. Оператор break в Python
  32. Вычисление фазы комплексного числа
  33. Циклы for в Python
  34. Извлечение новостей с помощью newspaper3k
  35. Работа с геоданными с помощью geopy
  36. Модуль pprint: улучшение вывода данных
  37. Создание GUI на Tkinter
  38. Хеши в Python
  39. Блок try-except-else
  40. Избегайте использования goto
  41. Импорт модулей в Python 3.12
  42. Переворот последовательности
  43. Метод Event.wait() в Python
  44. Комментарии в Python
  45. Отладка кода
  46. Область видимости переменных

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

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