On Mon, 19 Nov 2007 10:56:49 +0100, Francesco Demuro <[EMAIL PROTECTED]> 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
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python