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 ответ
Предыдущие вопросы здесь и здесь предполагают, что модуль декоратора может сделать это.