Python: Erstellen dynamischer Funktionen

8

Ich habe ein Problem, bei dem ich eine dynamische Funktion erstellen möchte, die eine Berechnung basierend auf den aus der Datenbank abgerufenen Werten durchführt. Ich bin bei meiner internen Berechnung klar, frage aber, wie man eine dynamische Klasse erstellt:

Meine Struktur ist ungefähr so:

%Vor%

Nun möchte ich alle diese PhaseX () -Funktion dynamisch erzeugen, also kann mir irgend jemand vorschlagen wie man so etwas mit Python Code erreichen kann

Warten auf positive Antwort Grüße Danke

    
Jedi Shadow 03.01.2011, 06:38
quelle

4 Antworten

27

Mit Closures .

%Vor%

Vorbehalte

    
Ignacio Vazquez-Abrams 03.01.2011, 06:56
quelle
1

Diese Antwort kann davon ausgehen, dass Ihre Absichten zu einfach sind, aber es scheint, als ob Sie einen Wert für bestimmte Funktionsaufrufe festlegen möchten.

Würden Sie so etwas wie das Folgende betrachten?

%Vor%     
amccormack 03.01.2011 06:46
quelle
1

Ich habe kürzlich mit dem gleichen Problem gekämpft, und ich wollte aufschreiben, was ich gefunden habe, um für mich zu arbeiten ... mit dem ursprünglichen Beispiel. Der Unterschied zu der früheren Antwort ist, dass ich setattr benutze, um den Funktionsnamen (als Teil der Klasse) zu erstellen.

%Vor%     
teeks99 24.04.2014 15:41
quelle
0

Sie können die type -Funktion verwenden, um dynamisch eine Python-Klasse oder eine Metaklasse zu erstellen. Ich beschreibe die erste Methode:

%Vor%

Die Argumente für den Typ sind: der Klassenname, die Klassenbasen (als Tupel), die Klassenattribute in einem Dict. Natürlich können Sie diese Parameter nach Ihren Wünschen programmieren.

    
albertov 03.01.2011 06:55
quelle

Tags und Links