Курс 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. Поиск наиболее частого элемента в списке
  2. Оператор морж в Python 3.8
  3. Функция all() в Python
  4. Оператор space-invader
  5. Метод __irshift__ для побитового сдвига вправо
  6. Группировка элементов в словарь
  7. Реверс строки в Python
  8. Dict Comprehension в Python
  9. Операторы увеличения и уменьшения переменной
  10. Работа с файлами в Python
  11. Установка и использование Virtualenv
  12. Работа с файлами в Python
  13. Форматирование строк в Python
  14. Оператор «or» в Python
  15. Преобразование объекта в строку
  16. Простой калькулятор Python
  17. Python Метод del.
  18. Python Метод Union Множеств
  19. Numpy: использование Ellipsis
  20. Monkey Patching в Python
  21. Оператор in и not in в Python
  22. Обработка ошибок в Python
  23. Избегание циклических зависимостей классов в Python
  24. Python groupby() из itertools: работа с повторяющимися элементами
  25. CSV строка разделение в Python
  26. Python Enum Weekday Usage
  27. Отслеживание выполнения программы с библиотекой tqdm
  28. Форматирование строк в Python
  29. Модуль subprocess: запуск внешних команд
  30. Создание таблиц в Python с PrettyTable
  31. Установка и обучение ChatterBot
  32. Конкатенация списков в Python
  33. Python reversed() функция
  34. Анонимные функции в Python
  35. Настройка шрифта и цвета в Tkinter
  36. Получение ID процесса
  37. Руководство по Pymorphy2
  38. Частичное совпадение пользовательского ввода в Python 3.10
  39. Создание уникального множества
  40. Работа с массивами в Python
  41. Структурирование данных с Pydantic
  42. Генераторы списков в Python
  43. Работа со строками
  44. Декораторы в Python
  45. Множественное наследование в Python
  46. Вывод сложных структур данных с помощью pprint
  47. Замена атрибута в именованном кортеже

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

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