Ich bin gerade dabei, eine Anwendung zu erstellen, wo ich über eine Reihe von Schritten, die weitgehend die gleiche Sache, eine sehr kleine Menge Code (~ 15 Zeilen) speichern müssen. Die Anzahl der Schritte hängt davon ab, wie das Projekt konfiguriert ist. Daher erscheint es mir ziemlich albern, für jede mögliche Instanz eine separate Funktion zu erstellen. Speichern von Funktionen in Dictionary [Python]
In JavaScript, würde ich so etwas tun:
var switches = [true, true, false, true];
var holder = {
0: function() { /* do step0 */ }
1: function() { /* do step1 */ }
2: function() { /* do step2 */ }
3: function() { /* do step3 */ }
// ...etc...
}
for (var i = 0; i < switches.length; i++)
if (switches[i])
holder[i]();
Gibt es eine Möglichkeit etwas ähnliches wie dies in Python zu tun? Das einzige, was ich mir vorstellen kann, ist etwa folgendes:
switches = [True, True, False, True]
class Holder(object):
@staticmethod
def do_0():
# do step0
@staticmethod
def do_1():
# do step 1
# ...etc...
def __repr__(self):
return [self.do_0, self.do_1, ...]
for action in Holder:
action()
Dies scheint nur schrecklich ineffizient, wenn ich eine signifikante Anzahl von Schritten habe. Gibt es einen besseren Weg, dies zu tun?
Ein Dekorateur passt besser zu dem, was Sie wollen –
Was wäre der beste Weg, dies zu tun? Wenn ich alle Funktionen mit demselben Dekorator definiere, gibt es eine einfache Möglichkeit, sie zu durchlaufen, ohne eine Liste zum Durchlaufen zu erstellen? –