デコレーター内でコンテキストマネージャーを使用する方法と、デコレーターで作成されたオブジェクトを装飾された関数に渡す方法、およびパラメーター付きのpythonデコレーターを見てきましたが、2つを組み合わせようとしています..しかし、苦労しています私の頭を丸めてください。
@wrap
ドキュメント文字列が保持されるかどうかはわかっているので、可能であればfunc tools デコレータを使用してこれを行うことをお勧めします。
私がやりたいことはこれです:
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
は接続の反対側のサービスにある. 関数呼び出しを返すだけですか?もしそうなら、どうやってパラメータを渡すのですか?