この質問が既に提起され、回答されている場合にはお詫び申し上げます。 私がしなければならないことは、概念上非常に単純ですが、残念ながら私はオンラインでその答えを見つけることができませんでした。カスタム名によるPythonの動的関数の作成
Python(Python2.7)の動的関数を実行時にカスタム名で作成する必要があります。各関数の本体も実行時に構築する必要がありますが、すべての関数で(ほぼ)同じです。
名前のリストから始めます。
func_names = ["func1", "func2", "func3"]
名前は単に私が結果になりたい関数func1、func2を、FUNC3、....
されないようにFUNC_NAMEリストは、任意の名前のリストを保持できることに注意してください。
def func1(*args):
...
def func2(*args):
...
def func3(*args):
...
私はこれを行う必要がある理由は、各関数名が外部から呼び出されるテストケースに対応するからです。
更新:ユーザー入力はありません。私ははるかに大きなモジュールの2つの端を結んでいます。一方のエンドはテストケースが何かを判断し、テストケースの名前のリストを入力します。もう一方の端は関数自体であり、テストケースの名前と1:1のマッピングを持たなければなりません。だから私はテストケースの名前を持っています、私はそれぞれのテストケースで何をしたいのか分かります。テストケースの名前を持つ関数を作成するだけです。テストケースの名前は実行時に決定されるため、これらのテストケースに基づく関数の作成は実行時に行う必要があります。
更新:このカスタムの名前付き関数をクラスにラップすることもできます。
文字列内の関数の内容を(ほとんど同じであるため)ハードコードすることができます。または、前もって定義した基底クラスの基にすることができます。このコンテンツを関数に取り込む方法を知る必要があります。例えば
:事前に
func_content = """
for arg in args:
print arg
"""
おかげで、
マハディ
ユーザー入力がありません。私ははるかに大きなモジュールの2つの端を結んでいます。一方のエンドはテストケースが何かを判断し、テストケースの名前のリストを入力します。もう一方の端は関数自体であり、テストケースの名前と1:1のマッピングを持たなければなりません。だから私はテストケースの名前を持っています、私はそれぞれのテストケースで何をしたいのか分かります。テストケースの名前を持つ関数を作成するだけです。テストケースの名前は実行時に決定されるため、これらのテストケースに基づく関数の作成は実行時に行う必要があります。 – mahdiolfat