Курс 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. Добавление элементов в список: append() vs extend()
  3. Добавление Progressbar в Python
  4. Переменные класса и экземпляра
  5. Создание спинбокса в tkinter
  6. Метод ipow для возведения в степень
  7. Метод join() для объединения строк
  8. Работа с атрибутом dict
  9. Преобразование регистра строк
  10. Транспонирование матрицы в Python
  11. Метод split() для разделения строк
  12. Частичное совпадение ввода
  13. Функция all() в Python
  14. Работа с датой и временем в Python
  15. Аннотации типов в Python
  16. Генерация случайных чисел в Python
  17. Перебор элементов списка в Python
  18. Объединение списков в Python.
  19. Транспонирование 2D-массива с помощью zip
  20. Создание лямбда-функций
  21. Импорт и использование модулей в Python
  22. Оптимизация интернирования строк
  23. Создание функций высшего порядка
  24. Изменяемые и неизменяемые объекты
  25. Работа со строками в Python
  26. Хеширование паролей с использованием salt
  27. Измерение времени выполнения кода
  28. Хэш-функции в Python
  29. Работа с словарями в Python
  30. Метод count() для списка
  31. Управление импортом в Python
  32. Поиск с библиотекой Google
  33. Очистка данных с Pandas
  34. Измерение времени выполнения кода
  35. Копирование в Python
  36. Установка и использование howdoi
  37. Многострочные строки в Python
  38. Работа с изображениями PIL
  39. Встроенные функции Python
  40. Списковое включение в Python
  41. Работа с каталогами в Python
  42. Очистка данных с помощью pandas
  43. Методы сравнения множеств
  44. Установка и обучение ChatterBot
  45. Ввод нескольких значений
  46. Роль ключевого слова self

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

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