Можно ли создать декоратор из класса

Python Middle Без компании
Можно ли создать декоратор из класса
Ответы
Да, можно создать декоратор из класса. Для этого класс должен реализовать метод `__call__`, который будет вызываться при вызове декорированной функции. Также можно использовать класс как декоратор с параметрами, если реализовать `__init__` и `__call__`. Пример простого декоратора-класса: ``` class Logger: def __init__(self, func): self.func = func def __call__(self, *args, **kwargs): print(f"Calling {self.func.__name__}") return self.func(*args, **kwargs) @Logger def add(a, b): return a + b print(add(2, 3)) # Выведет: Calling add\n5 ``` Пример с параметрами: ``` class Repeat: def __init__(self, times): self.times = times def __call__(self, func): def wrapper(*args, **kwargs): for _ in range(self.times): result = func(*args, **kwargs) return result return wrapper @Repeat(times=3) def greet(name): print(f"Hello, {name}!") greet("Alice") # Выведет Hello, Alice! 3 раза ``` Классы-декораторы полезны, когда нужно сохранять состояние между вызовами или реализовать сложную логику декорирования.