0

Pythonでメタプログラミングを行うには、その場で関数を作成する必要があります。私の問題は、コードを生成するまでパラメーターの数が決定されないことです。したがって、生成される関数が異なれば、名前も異なるさまざまなパラメーターが使用されます。しかし、関数が生成されると、すべての情報が利用可能になり、使用したくありません**args!次に例を示します。

# information collected by my codgen process
arg_names = ['param_a','param_b','param_c']
some_callable = ClassDeterminedWhileGeneratingCode

私が生成したいのは、このような関数で、クラスに追加されます。

def my_fkt(self,param_a,param_b,param_c):
    instance = some_callable(param_a=param_a,param_b=param_b,param_c=param_c)
    self.do_something(instance)
    return instance.generate_result()

私は高階関数を使用して関数を生成することにかなり慣れていますが、パラメーターの数が固定されていない場合は役に立ちません。を使用して関数を作成するコードをどこかで見たことがあると確信していますtype.FunctionType。しかし、それに関するドキュメントは見つかりませんでした。

4

2 に答える 2

1

見て、

http://snipplr.com/view/17819/

引数名を操作したい場合は、「y.func_code.co_varnames」を指定された名前のタプルに置き換える必要があります。

乾杯、ウーヴェ

于 2012-10-15T09:26:17.170 に答える