Курс 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"
- Транспонирование 2D-массива с помощью zip
- Отображение графиков в Jupyter с Matplotlib
- Иерархия классов в Python
- Создание GUI с Tkinter: Entry
- Основы Python за 14 дней
- Копирование и вставка текста в Python
- Управление браузером с Selenium
- Область видимости переменных
- Декораторы классов
- Работа с GitHub в Telegram
- Сравнение объектов в Python
- Управление контекстом выполнения кода
- Создание вложенных циклов for
- Использование двоеточия в Python
- Операторы увеличения и уменьшения переменной
- Встроенные функции Python
- Форматирование строк с помощью f-строк
- Повторение и перенос строки
- Оформление текста в консоли с TermColor
- Создание задания в Cron
- Управление ресурсами с контекстными менеджерами
- CSV строка разделение в Python
- Генераторы в Python
- Определение объема памяти объекта
- Основы слова
- Python: отсутствие точек с запятыми
- Функциональное программирование.
- Условные выражения в Python
- Функции min(), max(), sum()
- Установка random seed в Python
- Подсчет часто встречающихся элементов
- Печать комбинаций в Python с Itertools
- Методы обработки строк в Python
- Хэш-функции в Python
- Работа с изображениями PIL
- Установка и использование pyshorteners
- Мониторинг работы программы Py-spy
- Сравнение строк в Python
- Просмотр атрибутов и методов класса
- Распаковка аргументов в Python
- Удаление символа из строки
- Резервирование символов в Python
- Асинхронное выполнение задач в процессах
- Копирование словарей и списков в Python
- Логирование с Loguru
- Monkey Patching в Python















