Получение только заголовка ответа из HTTP POST с помощью curl

Я удивлен, что этот вопрос настолько старый, и никто не нашел времени, чтобы добавить фактический интроспективный способ сделать это, поэтому вот он:

Код, который вы хотите проверить .. .

def template(func):
    def wrapper(*args, **kwargs):
        return func(*args, **kwargs)
    return wrapper

baz = template
che = template

class Foo(object):
    @baz
    @che
    def bar(self):
        pass

Теперь вы можете проверить этот класс Foo с чем-то вроде этого ...

import ast
import inspect

def get_decorators(cls):
    target = cls
    decorators = {}

    def visit_FunctionDef(node):
        decorators[node.name] = []
        for n in node.decorator_list:
            name = ''
            if isinstance(n, ast.Call):
                name = n.func.attr if isinstance(n.func, ast.Attribute) else n.func.id
            else:
                name = n.attr if isinstance(n, ast.Attribute) else n.id

            decorators[node.name].append(name)

    node_iter = ast.NodeVisitor()
    node_iter.visit_FunctionDef = visit_FunctionDef
    node_iter.visit(ast.parse(inspect.getsource(target)))
    return decorators

print get_decorators(Foo)

Это должно печатать что-то вроде этого ...

{'bar': ['baz', 'che']}

, или, по крайней мере, это было, когда я тестировал это с помощью Python 2.7.9, очень быстро:)

486
задан Jonathan Allard 8 April 2012 в 03:12
поделиться