Определить декоратор в Python - PullRequest
3 голосов
/ 01 апреля 2011

В python можно ли определить, есть ли декоратор в другой функции?

В частности, я пытаюсь (в django) написать некоторое промежуточное программное обеспечение, которое будет определять, было ли обработанное представление упаковано в декоратор @login_required.

class SomeMiddleware(object):

    def process_view(self, request, view_func, view_args, view_kwargs):
        if has_decorator(view_func):
            print "this view was decorated"

Я пытаюсь заполнить часть has_decorator ....

Возможно ли это?

1 Ответ

3 голосов
/ 01 апреля 2011

Просто быстрое пошатывание в оболочке показывает, что атрибут func_closure в функции пуст для неокрашенных функций, но содержит данные в декорированных функциях. Не уверен на 100%, что это всегда так, но, возможно, это сработает для вас.

...