Posso aggiungere una variabile membro/metodo a un generatore Python?Aggiungi una variabile membro/metodo a un generatore Python?
Voglio qualcosa lungo le seguenti linee, in modo che posso "sbirciatina" alla variabile membro j:
def foo():
for i in range(10):
self.j = 10 - i
yield i
gen = foo()
for k in gen:
print gen.j
print k
Sì, lo so che posso tornare i e j ogni volta. Ma non voglio farlo. Voglio dare un'occhiata a un locale all'interno del generatore.
Sembra che stai davvero allungando il modello del generatore troppo lontano. Perché non utilizzare un approccio che si adatta meglio al caso d'uso, invece di cercare di adattare il problema al concetto di generatore stretto? – nikow
+1 per una buona domanda, per me ci sono molti vantaggi nell'accedere a variabili che possono cambiare nel corso del iterare attraverso il generatore. –
In seguito alla discussione, ho scritto la mia soluzione qui: http://blog.metaoptimize.com/2009/12/22/why-cant-you-pickle-generators-in-python-workaround-pattern-for-saving-training -state/ –