Декоратор принимает функцию или класс и возвращает объект, который будет связан с исходным именем. Декорировать можно не только функции: синтаксис @ поддерживает и определения классов.
Расскажите о декораторах в Python. Можно ли декорировать только функции?
Декоратор принимает функцию или класс и возвращает объект, который будет связан с исходным именем. Декорировать можно не только функции: синтаксис @ поддерживает и определения классов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Декоратор принимает функцию или класс и возвращает объект, который будет связан с исходным именем. Декорировать можно не только функции: синтаксис @ поддерживает и определения классов.
Несколько декораторов применяются снизу вверх. Для функций обёртка обычно сохраняет метаданные через functools.wraps; декоратор класса может вернуть тот же класс после настройки либо замену. Сам декоратор должен быть вызываемым, но возвращаемый объект не обязан оставаться функцией.