Entschuldigung, wenn diese Frage bereits gestellt und beantwortet wurde. Was ich tun muss, ist sehr einfach im Konzept, aber leider konnte ich online keine Antwort dafür finden.Python dynamische Funktionserstellung mit benutzerdefinierten Namen
Ich muss dynamische Funktionen in Python (Python2.7) mit benutzerdefinierten Namen zur Laufzeit erstellen. Der Rumpf jeder Funktion muss auch zur Laufzeit aufgebaut werden, ist aber für alle Funktionen (fast) identisch.
Ich fange mit einer Liste von Namen an.
func_names = ["func1", "func2", "func3"]
Beachten Sie, dass die func_name Liste eine Liste von beliebigen Namen halten kann, so die Namen einfach nicht func1, func2, func3 sein, ....
Ich möchte das Ergebnis sein:
def func1(*args):
...
def func2(*args):
...
def func3(*args):
...
Der Grund, warum ich dies tun muss, ist, dass jeder Funktionsname einem Testfall entspricht, der dann von der Außenwelt aufgerufen wird.
Aktualisierung: Es gibt keine Benutzereingabe. Ich bin zwei Enden eines viel größeren Moduls gebunden. Ein Ende bestimmt, was die Testfälle sind und füllt unter anderem eine Liste der Namen der Testfälle auf. Das andere Ende sind die Funktionen selbst, die 1: 1 mit dem Namen des Testfalls mappen müssen. Also habe ich den Namen der Testfälle, ich weiß, was ich mit jedem Testfall machen will, ich muss nur die Funktionen erstellen, die den Namen der Testfälle haben. Da der Name der Testfälle zur Laufzeit ermittelt wird, muss die auf diesen Testfällen basierende Funktionserstellung auch zur Laufzeit erfolgen.
update: Ich kann diese benutzerdefinierten benannten Funktionen auch in eine Klasse umbrechen, wenn das die Dinge einfacher machen würde.
Ich kann den Inhalt der Funktionen (da sie fast identisch sind) in einer Zeichenfolge fest codieren, oder ich kann sie von einer zuvor definierten Basisklasse ableiten. Ich muss nur wissen, wie man die Funktionen mit diesem Inhalt füllt.
Zum Beispiel:
func_content = """
for arg in args:
print arg
"""
Vielen Dank im Voraus,
Mahdi
Es gibt keine Benutzereingaben. Ich bin zwei Enden eines viel größeren Moduls gebunden. Ein Ende bestimmt, was die Testfälle sind und füllt unter anderem eine Liste der Namen der Testfälle auf. Das andere Ende sind die Funktionen selbst, die 1: 1 mit dem Namen des Testfalls mappen müssen. Also habe ich den Namen der Testfälle, ich weiß, was ich mit jedem Testfall machen will, ich muss nur die Funktionen erstellen, die den Namen der Testfälle haben. Da der Name der Testfälle zur Laufzeit ermittelt wird, muss die auf diesen Testfällen basierende Funktionserstellung auch zur Laufzeit erfolgen. – mahdiolfat