Встречается на собеседованиях • сегодня
Может ли класс быть декоратором
Да, класс может быть декоратором. Для этого класс должен реализовывать метод __call__, который будет вызываться при вызове декорируемой функции. Также можно использовать __init__ для принятия аргументов декоратора.
Пример декоратора-класса без аргументов:
python
class MyDecorator:
def __init__(self, func):
self.func = func
text
def __call__(self, *args, **kwargs):
print("До вызова функции")
result = self.func(*args, **kwargs)
print("После вызова функции")
return result@MyDecorator
def my_function():
print("Функция выполняется")
my_function()
text
Пример декоратора-класса с аргументами:
```python
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()
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы