Walter Valenti wrote:

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()

Le due cose sono in contraddizione. Quel metodo *non* viene chiamato in maniera statica e stai creando esplictamente un oggetto Pluto. Infatti scrivi Pluto(), che e' esattamente l'istanziazione di un oggetto di tipo Pluto.

Il metodo "metodo1" di Pluto è semplicemente definito così:
class Pluto:
      def metodo1(self):
           pass

E confermi che non e' un metodo "statico" o un "class-method".

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.

Non capisco cosa vuoi fare. Se vuoi fare Monkey Patching (cosa che e' di per se una pessima idea) puoi farlo nel modo piu' banale: riassegni all'attributo che contiene il metodo una nuova funzione.

Se vuoi fare una cosa ancora peggiore, ovvero avere una classe il cui comportamento dipende dal call-stack... Preferisco non pensarci nemmeno. Comunque piuttosto che ridefinire, devi prevedere la cosa e analizzare dove sei chiamato.

Altrimenti fai cose piu' blande tipo gli oggetti Pluto in main *non* li crei con il costruttore normale ma attraverso una funzione (al limite definita in main) che li patcha al volo. Ma ribadisco... io rivedrei il design.

--
.
..: -enrico-

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

Rispondere a