【发布时间】:2015-08-09 21:58:58
【问题描述】:
我见过How to use a context manager inside a decorator and how to pass an object created in decorator to decorated function 和python decorators with parameters,我正在尝试将两者结合起来......但我很难理解它。
如果可能的话,我更愿意使用 func 工具 @wrap 装饰器来执行此操作,因为我知道是否会保留文档字符串。
我想做的是这样的:
def pyro_opener(func,service,database,port,secret_key):
def wrapper(params):
with Pyro4.Proxy("PYRO:"+service+"@"+database+":"+port) as obj:
obj.set_secret_key(secret_key)
return obj.func(params)
return wrapper
@pyro_opener(output_service, employee_db,port=9876,secret_key="h3llow0rld")
def get_employee_names(salary):
return obj.return_employee_names(salary) # obj is clearly not in scope here
# but what else can I do?
get_employee_names(25000)
>>>> Bob, Jane, Mary
我不认为这种方式有效,return_employee_names 方法在连接另一端的服务上。我应该只返回函数调用吗?如果是这样,我该如何传递参数呢?
【问题讨论】:
标签: python python-2.7 decorator python-decorators pyro