Курс 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 3.9
- Приоритет операций в Python
- Потоковый ввод в Python
- Инверсия списка и строки
- Разбиение строки в Python
- Работа с collections в Python.
- Преобразование PowerPoint в PDF.
- Вывод символов строки в Python
- Получение текущей даты и времени
- Работа с итераторами в Python
- Удаление файлов с shutil.os.remove()
- Разделение строки с регулярными выражениями
- Профилирование данных с Pandas
- Методы работы со списками
- Сортировка в Python
- Встраивание HTML в Jupyter Notebook
- Форматирование даты с strftime()
- Именованные срезы в Python
- Использование двоеточия в Python
- Создание пустых функций и классов в Python
- Протокол управления контекстом
- Форматирование вывода с F-строками
- Работа с JSON в Python
- Обработка исключений в Python 3
- Анализ текста на русском языке с помощью Pymystem3
- Округление чисел с помощью round
- Работа с датами в Python
- PrettyTable: создание таблицы
- Работа с f-строками 2.0
- Библиотека sh: удобные команды терминала
- Генераторы в Python
- Работа с классами данных
- Поток данных в Python
- Функция all() в Python
- Создание и инициализация объектов
- Работа с CSV файлами
- Аннотации типов в Python
- Работа с итераторами через срезы
- Создание класса очереди
- Конкатенация строк с join() в Python
- Объединение словарей в Python
- Списки: объединение, изменение
- Поиск индекса элемента
- Запуск асинхронной корутины















