Курс Python → Декоратор total_ordering для сравнения объектов
Для упрощения использования операторов сравнения в Python можно воспользоваться декоратором functools.total_ordering. Этот декоратор позволяет автоматически создать все операторы сравнения (__eq__, __ne__, __lt__, __le__, __gt__, __ge__>) на основе реализации лишь двух из них.
Например, если у вас есть класс Point с атрибутами x и y, и вы хотите сравнивать объекты этого класса, то достаточно реализовать методы __eq__ и __lt__>. Затем применить декоратор @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 могут быть сравниваемыми с помощью всех операторов сравнения. Например:
p1 = Point(1, 2)
p2 = Point(3, 4)
print(p1 == p2) # False
print(p1 != p2) # True
print(p1 < p2) # True
print(p1 p2) # False
print(p1 >= p2) # False
Таким образом, использование декоратора functools.total_ordering позволяет существенно упростить работу с операторами сравнения в Python, делая код более читаемым и компактным.
Другие уроки курса "Python"
- Исключение NotImplementedError
- Проверка типа объекта в Python
- Оператор continue в Python
- Использование type hints
- Установка и использование pyshorteners
- Форматирование заголовков в Python
- Нан-рефлексивность в Python
- Избегайте двойного подчеркивания
- Генераторы в Python
- Ноутбуки AMD Ryzen ™ 4000: мощность и эффективность
- Импортирование в Python
- Разбиение строки в Python
- Создание .exe файла с pyinstaller
- Оператор @ для умножения матриц
- Применение функции map() в Python
- Измерение времени выполнения кода
- Использование эмодзи в Python
- Особенности ключей словаря в Python
- Обезопасьте ввод данных
- Принципы LSP и ISP в Python
- Функция divmod() в Python
- Копирование объектов в Python
- Управление доступом к модулю
- Декоратор защиты анонимных пользователей
- Изменение списка срезом
- Избегание изменяемых аргументов
- Проверка файла .py на синтаксис.
- Список переменных в Python
- Оператор «not» в Python
- Сортировка с помощью key
- Модуль pprint
- Распаковка аргументов в Python
- Синхронизация потоков с time.sleep()
- Асинхронное программирование с asyncio
- Переопределение оператора % для объектов
- Обновление ключей в Python
- Функции min(), max(), sum()
- Нахождение максимального значения и его индекса в списке
- Подписка на Kaspersky Team
- Преобразование строк в числа с плавающей запятой
- Переопределение метода xor в Python
- Создание класса очереди
- Измерение времени выполнения кода
- Модуль antigravity: генерация координат
- Метод gt в Python
- Разделение строки с регулярными выражениями
- Разделение строк в Python















