Может ли класс быть декоратором

Python Senior Без компании
Может ли класс быть декоратором
Ответы
Да, класс может быть декоратором. Для этого класс должен реализовывать метод `__call__`, который будет вызываться при вызове декорируемой функции. Также можно использовать `__init__` для принятия аргументов декоратора. Пример декоратора-класса без аргументов: ``` class MyDecorator: def __init__(self, func): self.func = func def __call__(self, *args, **kwargs): print("До вызова функции") result = self.func(*args, **kwargs) print("После вызова функции") return result @MyDecorator def my_function(): print("Функция выполняется") my_function() ``` Пример декоратора-класса с аргументами: ``` class DecoratorWithArgs: def __init__(self, prefix): self.prefix = prefix def __call__(self, func): def wrapper(*args, **kwargs): print(f"{self.prefix}: До вызова") result = func(*args, **kwargs) print(f"{self.prefix}: После вызова") return result return wrapper @DecoratorWithArgs("DEBUG") def test(): print("Тестовая функция") test() ```