Курс 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. Импорт в Python: список all
  3. Удаление специальных символов с помощью re.sub
  4. Циклы for в Python
  5. Функции высшего порядка в Python
  6. Библиотека Rich: форматирование текста
  7. Метод is_absolute() для PurePath
  8. Регулярные выражения в Python
  9. Модуль functools в Python
  10. Метод repr() в Python
  11. Ошибка NotImplemented в Python
  12. Сортировка данных в Python
  13. Комментарии в Python
  14. Создание вложенного генератора
  15. Функция enumerate() — Python
  16. Цикл for с enumerate() в Python
  17. Замена атрибута в именованном кортеже
  18. Обработка элементов в Python
  19. Создание и использование модулей в Python
  20. Установка Python — Простое руководство
  21. Измерение времени выполнения кода
  22. Работа с файлами в Python
  23. Атрибуты объекта в Python
  24. Конвертация текстовых чисел с помощью Numerizer
  25. Обновление ключей в Python
  26. Оператор Walrus в Python 3.8
  27. Функция print() — вывод информации
  28. Перезагрузка оператора в Python
  29. Сериализация объектов в Python
  30. Работа с библиотекой xkcd
  31. Python reversed() vs срез[::-1]
  32. Нахождение хеша для бесконечности и NaN в Python
  33. Экранирование символов в Python
  34. Поиск наиболее частого элемента
  35. Основные функции и модули Python
  36. Удаление пробелов методом translate()
  37. Функция reversed() в Python
  38. Экспорт функций в Python
  39. Удаление элементов из списка
  40. Декоратор @override
  41. Генераторы в Python
  42. Метод ifloordiv для пользовательских классов
  43. Строки в Python: апострофы и кавычки
  44. Выражения-генераторы в Python
  45. Удаление специальных символов
  46. Удаление falsy-значений из списка с помощью filter

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

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