Курс 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"
- Декоратор защиты анонимных пользователей
- Метод join для наборов
- Форматирование данных с помощью pprint
- Сглаживание списка
- Форматирование строк с f-строками
- inspect в Python: анализ кода
- Оператор (*) в Python
- Решение переменной Шредингера
- Реализация метода __abs__ в Python
- Метод rmatmul для обратного матричного умножения
- Безопасный доступ к значениям словаря
- Функции в Python: создание и вызов
- Декораторы в Python
- Работа с изображениями PIL
- Проверка типов с помощью isinstance
- Функция zip() в Python
- Итерация по итерируемым объектам
- Функция zip() в Python
- Переопределение унарных операторов
- Явный импорт в Python
- Присвоение значений переменным в Python
- Оператор Walrus в Python
- Дефолтные параметры в Python
- PEP-401: оператор
- Управление User-Agent в Python
- Блок try-except-else
- Работа с комплексными числами в Python
- Подсчет элементов в Python
- Распаковка элементов массива
- Работа с часовыми поясами в Python
- Тестирование с unittest
- CSV строка разделение в Python
- Преобразование данных в Python
- Форматирование чисел в Python
- Поиск самого длинного слова в списке с использованием max()
- Поиск наиболее частого элемента в списке
- Метод join() для объединения элементов в строку.
- Отображение графиков в Jupyter с Matplotlib
- Работа с исключениями в Python
- Библиотека schedule: планировщик задач
- Цикл for с enumerate() в Python
- Нахождение максимального значения и его индекса в списке
- Создание списка через цикл
- Получение имени функции с помощью inspect
- Фильтрация списка от «ложных» значений
- Удаление символа из строки















