[Python] lavorare con più classi

Daniele Varrazzo piro a develer.com
Lun 19 Nov 2007 11:49:19 CET


On Mon, 19 Nov 2007 10:56:49 +0100, Francesco Demuro
<francesco.demuro a sinapsi.it> wrote:
> 
> Ciao,
> volevo inserirmi nel discorso è chiedere una delucidazione :
> Python è definito come un linguaggio di *Script*.
> Nell'esempio che ha fornito Carlo, oltre al problema
> dell' *if ( __name__=='__main__'*):
> il problema non è anche causato dal fatto che comunque
> ClasseB è definita *dopo* ClasseA ?

No, non hai questo tipo di problema, perché:

   class ClasseA:
       def metodoA(self, messaggio):
           b = ClasseB()
           b.stampa(messaggio)

   class ClasseB:
       def stampa(self, messaggio):
           print messaggio

quando importi, il file viene eseguito e vengono creati gli oggetti ClasseA
e ClasseB. ClasseA invoca ClasseB solo quando viene invocato metodoA(), che
è successo dopo l'import del modulo.

In particolare, l'effetto dello statement:

    def f(args):
        suite

è quello di "compilare" la suite e associare questo oggetto compilato al
nome f: in questo momento non è necessario che tutti i nomi utilizzati
dalla suite siano già risolti. La risoluzione avverrà solo alle
esecuzioni di f, con dei lookup.

Diverso sarebbe stato il caso di un comando che viene eseguito all'import,
ad esempio:

   class ClasseC:
       amico = ClasseD

   class ClasseD:
       pass

questo non funziona, ma comincia a funzionare invertendo le definizioni.

-- 
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com



More information about the Python mailing list