Python Decorator теряет определения аргументов

Я использую блок, как это:

def served(fn) :    
    def wrapper(*args, **kwargs):
        p = xmlrpclib.ServerProxy(SERVER, allow_none=True )
        return (p.__getattr__(fn.__name__)(*args, **kwargs)) # do the function call
    return functools.update_wrapper(wrapper,fn)

@served
def remote_function(a, b):
    pass

обернуть серию вызовов XML-RPC в модуль python. "Обслуживаемый" декоратор вызывается в функциях-заглушках для представления операций на удаленном сервере.

Я создаю такие заглушки с намерением позже проверить их на предмет информации о функции, особенно ее аргументах.

Как указано выше, код выше не передает информацию об аргументах из исходной функции в оболочку. Если я проверяю с inspect.getargspec( remote_function ) тогда я получаю по существу пустой список, а не args=['a','b'] что я ожидал

Я предполагаю, что мне нужно дать дополнительное направление functools.update_wrapper() позвонить через опционально assigned параметр, но я не уверен, что именно добавить к этому кортежу, чтобы получить желаемый эффект.

Имя и строка документа правильно переносятся в новый объект функции, но может кто-нибудь посоветовать мне, как передать определения аргументов?

Благодарю.

1 ответ

Решение

Предыдущие вопросы здесь и здесь предполагают, что модуль декоратора может сделать это.

Другие вопросы по тегам