Курс 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. Метод rmatmul для обратного матричного умножения
  2. Расчет времени выполнения
  3. Генератор списка в Python
  4. Операции со строками в Python
  5. Списковое включение в Python
  6. Подписка на SelectelNews в Twitter
  7. Операторы присваивания в Python
  8. Retrying в Python: повторные вызовы
  9. Оператор обр. импликации
  10. Атрибуты массивов в Numpy
  11. Метод bool() в Python
  12. Путь к интерпретатору Python
  13. Создание вкладок с TKinter
  14. Использование defaultdict в Python
  15. Срезы в Numpy
  16. Метод pos в Python
  17. Вставка переменных в шаблоны Flask
  18. Управление асинхронными задачами на Python.
  19. Установка библиотек в Python
  20. GitHub в Telegram: подписка на уведомления
  21. Лямбда-функции в defaultdict
  22. Измерение времени выполнения кода в Python
  23. Определение объема памяти объекта
  24. Курсы Яндекс Практикум
  25. Метод get() в Python
  26. Переменные в Python
  27. Частичное совпадение пользовательского ввода в Python 3.10
  28. Проверка строки на палиндром
  29. Иерархия классов в Python
  30. Подсчет элементов с помощью Counter из collections
  31. Библиотека Emoji: использование смайлов в Python
  32. Использование функции product
  33. Обработка ошибок в Python
  34. Применение функций в Python
  35. Равенство и идентичность в Python
  36. Генераторы списков в Python
  37. Удаление дубликатов из списка
  38. Генерация UUID в Python
  39. Функциональное программирование в Python
  40. Участие в сообществе @selectel
  41. Фильтрация элементов с помощью islice
  42. Библиотека Rich: форматирование текста
  43. Отладчик pdb: начало работы
  44. Работа с словарями в Python
  45. Группировка элементов Python
  46. Форматирование объектов с модулем pprint
  47. Вычисление фазы комплексного числа

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

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