[Python] Reload di (parti di) un modulo in ipython

Pietro Battiston me a pietrobattiston.it
Mer 3 Ott 2012 12:57:44 CEST


Salve a tutti,

tipicamente, quando programmo lo faccio con editor e ipython aperti uno
a fianco all'altro, per fare continue prove [ed evitare quasi del tutto
di tenermi aperta documentazione].

Chiaramente nel momento in cui modifico il sorgente vorrei spendere meno
fatica possibile per riportarmi al punto del programma su cui sto
lavorando [d'altronde immagino sia una necessità condivisa].

"reload(mio_modulo)" aiuta, ma non basta. Vorrei prendere un'istanza di
una mia classe mio_modulo.Classe e conservarla attraverso il reload ma
sostituendo tutti i suoi metodi con i corrispondenti metodi dal modulo
appena ricaricato.

Ci ho provato in un po' di modi (es. dopo il reload
istanza.__class__.metodo = mio_modulo.Classe.metodo ), ed ho ottenuto un
po' di cose comiche tipo:

"TypeError: unbound method visita_art() must be called with Visiter
instance as first argument (got Visiter instance instead)"

C'è un modo? Paradossalmente, credo che me la caverei se invece di
metodi della classe sfruttassi solo funzioni standalone, da assegnare
poi come metodi... ma non è una via che mi piaccia granché.

ciao, grazie

Pietro



Maggiori informazioni sulla lista Python