Курс 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. Применение функций в Python
  2. Подписка на SelectelNews в Twitter
  3. Символ подчеркивания в Python
  4. Работа со словарями
  5. Работа с GitHub в Telegram
  6. Работа с изменяемыми коллекциями
  7. Установка максимального количества цифр
  8. Извлечение новостей с помощью newspaper3k
  9. Модуль os в Python: работа с файлами
  10. Вывод символов строки в Python
  11. Форматирование строк в Python
  12. Измерение времени выполнения кода
  13. Удаление элемента по индексу
  14. Ограничение итераций в Python
  15. Функции в одну строку
  16. Логирование в Python
  17. Метод setitem в Python
  18. Оператор «not» в Python
  19. Передача аргументов в Python
  20. UserList в Python: Описание и примеры использования
  21. Анонимные функции в Python
  22. Удаление файлов в Python
  23. Оператор морж в Python 3.8
  24. Установка переменной среды в Python
  25. Фильтрация последовательности
  26. Логирование с Logzero
  27. Defaultdict в Python
  28. Работа с индексами списков
  29. Преобразование списка в словарь через генератор
  30. Декораторы в Python
  31. Импорт и использование модулей в Python
  32. Оператор is в Python
  33. Работа с deque из collections
  34. Отношения подклассов в Python
  35. Сериализация и десериализация объектов
  36. split() без разделителя
  37. Метод __iand__ для пользовательских классов
  38. Выражения-генераторы в Python
  39. Создание графиков в терминале
  40. Проверка типа данных
  41. Добавление элементов в список: append() vs extend()
  42. Экспорт данных с помощью writefile
  43. JSON-esque в Python
  44. Счетчик в Python: most_common()
  45. Перезапуск ячейки в Jupyter Notebook с dostoevsky
  46. Проверка надежности пароля на Python
  47. Модуль inspect

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

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