python decorator丢失参数定义

时间:2012-07-26 19:07:17

标签: python decorator xml-rpc functools

我正在使用这样的块:

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 个答案:

答案 0 :(得分:1)

之前的问题herehere表明decorator module可以做到这一点。