- Прекрасная (хотя и тяжеловата для неподготовленного читателя) статья про декораторы в Python:
-
- У декораторов есть общая черта с более ранними метапрограммными абстракциями, введенными в Python: они в действительности не делают ничего, что нельзя было бы сделать и без них.
- ...
- Будучи просто синтаксической изюминкой, декораторы позволяют легко делать глупости, если вам этого хочется. Декоратор – это просто функция, принимающая как минимум один аргумент. Это программист, использующий декоратор, должен удостовериться, что возвращаемая величина является все еще осмысленной функцией или методом ...
- ...
- Вероятнее всего, самое типичное применение декораторов, с которым вам придется сталкиваться – это оснащение функции или метода какими-либо дополнительными функциями вдобавок к их основному назначению. Например, на Web-сайте Python Cookbook (см. ссылку в разделе Ресурсы) и в других подобных местах можно встретить декораторы, добавляющие такие возможности, как трассировка, ведение журнала, запоминание/кэширование, блокировка потоков, перенаправление вывода. Сходны с такими модификациями, хотя и немного в другом духе, модификации "до" и "после". Одно интересное применение "до/после"-декорирования – это проверка типов аргументов и возвращаемого значения функции. Предполагается, что подобный декоратор type_check() должен вызвать исключение или предпринять какие-нибудь корректирующие действия, если типы не те, которые ожидаются.
-
- ibm.com/developerworks/ru/library/l-cpdecor
- ibm.com/developerworks/linux/library/l-cpdecor
-
- А знаете ли вы, что декораторы приближают нас к AOP?
-
Комментариев нет:
Отправить комментарий