Attualmente sto costruendo un'applicazione in cui ho bisogno di scorrere su una serie di passaggi che fanno in gran parte la stessa cosa, salvo una quantità molto piccola di codice (~ 15 linee). Il numero di passaggi varierà a seconda di come è configurato il progetto, quindi mi sembra un po 'sciocco creare una funzione separata per ogni potenziale istanza.Memorizzazione di funzioni nel dizionario [Python]
In JavaScript, vorrei fare qualcosa di simile:
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]();
C'è un modo per fare qualcosa di simile a questo in Python? L'unica cosa che mi viene in mente è qualcosa di simile:
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()
Questo sembra solo terribilmente inefficiente se ho un numero significativo di passaggi. C'è un modo migliore per andare su questo?
Un decoratore potrebbe essere più in linea con quello che desideri –
Quale sarebbe il modo migliore per farlo? Se definisco tutte le funzioni con lo stesso decoratore, c'è un modo semplice per collegarsi tra loro senza creare una lista da scorrere? –