[Python] Sovrascrittura di metodi.

Marco Beri marcoberi a gmail.com
Gio 31 Mar 2011 10:04:08 CEST


2011/3/31 Walter Valenti <waltervalenti a yahoo.it>

> ho un modulo, chiamato per es:  esempio.py
> All'interno ho definito diverse classi. Es: Pippo, Pluto, ecc...
> Pippo possiede un metoto che in determinate condizione richiama in maniera
> "statica" (ovvero senza istanziare esplicitamente un oggento Pluto)
> un metodo di Pluto, ovvero esegue;
> Pluto().metodo1()
>
> Il metodo "metodo1" di Pluto è semplicemente definito così:
> class Pluto:
>      def metodo1(self):
>           pass
>
>
> Questo modulo "esempio.py" viene richiamato all'interno di un file
> "main.py" con un classico "from xxx import esempio".
> E' possibile in qualche modo all'interno di main.py ridefinire il metodo1
> di Pluto, in maniera tale che quando viene richiamato
> all'interno di esempio.py venga eseguita la nuova definizione.
> Da notare che in main.py non eseguitò mai il metodo1 di Pluto, ma questo
> viene eseguito solo all'interno di esempio,py da un istanza
> di Pippo.
>

Walter,
questo si chiama monkey patching e, a dire la verità, è una pratica da
sconsigliare (tranne che in casi veramente eccezionali).

Nel tuo caso nel main puoi scrivere:

from esempio import Pippo
def _newmethod(self):
    print "Ciao"
Pippo.metodo1 = _newmethod


Ma, ti ripeto, io non lo farei.
Ciao.
Marco.

-- 
http://thinkcode.tv/gratis - Capire in 15 minuti cosa può fare Python
http://stacktrace.it - Aperiodico di resistenza informatica
http://python.thinkcode.tv - Videocorso di Python
http://beri.it - Blog di una testina di vitello
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20110331/440a408b/attachment.html>


Maggiori informazioni sulla lista Python