Курс 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. Установка и использование Logzero
  4. Обмен значений переменных в Python
  5. Измерение времени выполнения с помощью time
  6. Использование type hints
  7. Python: изменяемые и неизменяемые коллекции
  8. Переопределение оператора % для объектов
  9. Генераторы списков в Python
  10. Подсказки типов в Python
  11. Повторение элементов в Python
  12. Оператор «and» в Python
  13. Проверка строки на палиндром
  14. Функция divmod() в Python
  15. Генерация ключей RSA
  16. Обход словаря в Python
  17. Печать календаря в Python
  18. Сортировка HTML по CSS-селектору
  19. Python Тесты и Гайды
  20. Работа со стеком в Python
  21. Создание новых функций с помощью functools.partial
  22. Создание функций высшего порядка
  23. Обработка исключений в Python 3
  24. Метод join() для объединения элементов в строку.
  25. Округление банкира в Python
  26. Установка и использование emoji
  27. Построение графиков в терминале с bashplotlib
  28. Python reversed() функция
  29. Тестирование с responses
  30. Python Менеджер контекста
  31. Отслеживание выполнения программы с библиотекой tqdm
  32. Измерение времени выполнения кода
  33. Функция findall() для поиска вхождений строки
  34. Генераторы в Python
  35. Создание тестовых данных с Faker
  36. Создание списков в Python
  37. Метод сравнения объектов в Python
  38. Обработка ошибок в Python
  39. Метод join для наборов
  40. Рациональные числа в Python
  41. Класс Counter() для подсчета элементов
  42. Создание словарей с defaultdict()
  43. Значения по умолчанию в Python

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

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