Курс 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"
- Основные функции и модули Python
- Оператор continue в Python
- Операции с датами в Python
- Распаковка аргументов в Python
- Измерение времени выполнения кода
- Модуль array: создание и использование массивов
- Лямбда-функции в Python
- Упрощение условных выражений с тернарным оператором
- Поиск шаблона в начале строки
- Сортировка HTML по CSS-селектору
- Блок else в обработке исключений
- Метод setdefault() в Python
- Установка и обучение ChatterBot
- Обработка ошибок в Python
- Отладка в Python
- Измерение времени выполнения кода
- Оператор in для Python
- Исправление ошибки NameError
- Декораторы в Python
- Импорт и использование модулей в Python
- Итерация по копии коллекции
- Метод join для объединения строк
- Python reversed() функция
- Метод ne для сравнения объектов
- Множественные конструкторы в Python
- Объединение кортежей в Python
- %pinfo: получение информации об объекте
- Оператор «is not» в Python
- Функция zip() в Python
- Оператор * в Python
- Вычисление логарифмов в Python
- Метод __index__ в Python
- Упрощение работы с JSON-данными в Python
- Работа с модулем glob в Python
- Python Аргументы по умолчанию
- Импорт модулей и пакетов в Python
- Поиск индекса элемента
- Вычисление разности множеств в Python
- Метод rxor для операции побитового исключающего «или»
- Python union() функция — объединение множеств
- Операции с матрицами в Python
- Python defaultdict добавление ключа
- Удаление falsy-значений из списка с помощью filter















