1

我正在使用这样的块:

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参数为调用提供额外的指导,但我不确定要向该元组添加什么以获得我想要的效果。

名称和文档字符串已正确传输到新函数对象,但有人可以告诉我如何传输参数定义吗?

谢谢。

4

1 回答 1

1

以前的问题herehere表明装饰器模块可以做到这一点。

于 2012-07-26T19:17:43.370 回答