Курс 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. Лямбда-функции для min/max
  3. Отправка POST запроса на сервер.
  4. Объединение кортежей в Python
  5. Очистка списка от False, None, 0, «»
  6. Возвращение нескольких значений через кортеж или класс
  7. Операторы объединения в Python 3.9
  8. Преобразование типов данных в set comprehension
  9. Сортировка и обратный порядок
  10. Создание новых списков в Python
  11. Проекты на Python
  12. Генератор надежных паролей
  13. Функция zip() в Python
  14. Декораторы в Python
  15. Обучение модели с указанием эпох
  16. Явный импорт переменных
  17. Форматирование данных с помощью pprint
  18. Использование type hints
  19. Декоратор total_ordering для класса Point
  20. Работа с GitHub в Telegram
  21. CSV строка разделение в Python
  22. Генераторы списков в Python
  23. Big O оптимизация
  24. Делегирование в Python
  25. Модуль inspect
  26. Объединение словарей в Python
  27. Проверка версии Python
  28. Изменение элемента списка
  29. Использование функции product
  30. Работа с IP-адресами в Python
  31. Типы возвращаемых значений в Python
  32. Удаление элементов из списка
  33. Декодирование строк в Python
  34. Лямбда-функции в defaultdict
  35. lru_cache оптимизация функций
  36. Генераторы данных
  37. Изменение списка срезом
  38. Отрицательные индексы списков в Python
  39. Многоточие в Python
  40. Создание namedtuple из словаря
  41. Функция map() и ленивая оценка
  42. Генераторы данных
  43. Основные методы NumPy
  44. Класс Counter() для подсчета элементов
  45. Поиск email
  46. Метод lt для сортировки объектов

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

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