>
>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.
>

L'ho risolto in altro modo:
al costruttore di Pippo in main.py passo un istanza di una classe Topolino dove 
ho definito i miei metodi.
Nel modulo esempio.py viene eseguito il metodo di questa istanza di Topolino. 
Sparisce la classe Pluto


Walter


      
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a