Курс Python → Декоратор total_ordering для класса Point

Декоратор functools.total_ordering в Python используется для упрощения процесса реализации операторов сравнения в пользовательских классах. Он позволяет автоматически создать остальные операторы сравнения (gt, le, ge, ne) на основе уже объявленных операторов сравнения (lt и eq). Для использования этого декоратора необходимо просто объявить методы __lt__ (less than) и __eq__ (equal) в вашем классе.

Пример использования декоратора 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 имеет методы __eq__ и __lt__, что позволяет использовать декоратор @total_ordering. После применения декоратора, автоматически создаются остальные операторы сравнения (__gt__, __le__, __ge__, __ne__>), основанные на уже объявленных методах.

Таким образом, использование декоратора functools.total_ordering позволяет сэкономить время и упростить процесс реализации операторов сравнения в пользовательских классах. Это особенно удобно, когда необходимо сравнивать экземпляры классов по их атрибутам или значениям.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. F-строки в Python
  2. Область видимости переменных
  3. Распаковка аргументов в Python
  4. Операции с комплексными числами
  5. JMESPath в Python
  6. Работа со списками
  7. Перемещение и удаление файлов в Python
  8. Импорт в Python: список all
  9. Отладка в командной строке
  10. Преобразование данных в Python
  11. discard() — удаление элемента из множества
  12. Поиск с библиотекой Google
  13. Преобразование регистра строк
  14. Взаимодействие с sys
  15. Избегайте использования goto
  16. Модуль future Python
  17. Python: Фильтрация списков с помощью filter()
  18. Измерение времени выполнения кода
  19. Очистка вывода в Python
  20. Переопределение метода __or__()
  21. Логирование в Python
  22. Создание вложенных циклов for
  23. Строковое представление объектов
  24. Форматирование строк в Python
  25. Циклы в Python
  26. Получение текущей даты в Python
  27. Операции с числами в Python
  28. Аргумент по умолчанию
  29. Работа с дробями в Python
  30. Метод pop() списка
  31. Создание новых списков в Python
  32. Конструктор в Python
  33. Функции высшего порядка в Python
  34. Нахождение самого длинного слова в списке с помощью max
  35. Работа с deque из collections
  36. Импорт модулей в Python 3.12
  37. Многострочные комментарии в Python
  38. Создание и инициализация объектов
  39. Парсинг статей с Newspaper3k
  40. Комментарии в Python
  41. Вывод баннеров
  42. PEP-401: оператор
  43. Управление виртуальными окружениями в Python
  44. Операция += для списков
  45. Нахождение пересечения множеств

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

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