> Il giorno 01/lug/2014, alle ore 15:37, Gabriele Battaglia <iz4...@libero.it> > ha scritto: > > Ciao Giovanni e grazie. > Visto che in questi giorni, data la mia presenza, questa lista è diventata un > asilo per programmatori... Dove l'infante sono io, chiaramente, mi > spiegheresti il significato di questa riga? > > if __name__=='__main__': > > Faccio qualche domanda per capire, correggimi. > __name__ è l'atributo di che cosa? Assume "__main__" quando ci si trova in > console? Che altri valori potrebbe avere? Perchè istanzi degli oggetti della > tua classe, solo se __name__ è = a __main__? > > GB.
L'idea è che se scrivi un programma in linea di massima parti da un'idea e poi ti lasci guidare dall'intelligenza, dall'iniziativa e dalla tua voglia di sperimentare. Se ami pensare in grande il fatto di avere una classe Scacchiera ti consente di avere più istanze di Scacchiera e un domani di gestire in contemporanea un torneo con tante scacchiere. Un domani scriverai un codice bellissimo per gestire tornei e scriverai "from scacchi import Scacchiera" e poi instanzierai tante scacchiere quanti sono i tavoli e farai un grande programma. Oppure butterai via subito tutto. Ma il punto è che quando scrivi Scacchiera non hai ancora nulla di pronto per testarla e quindi subentra il 'trucco' if __name__='__main__': Questo ti consente da terminale di scrivere python scacchi.py (dove scacchi.py è il nome del modulo). Quando il programma va in esecuzione vengono eseguite tutte le istruzione non indentate e quindi anche la famigerata "if __name__". Se tu lanci il modulo scacchi da terminale allora il suo nome è "__main__" e quindi vengono eseguite le istruzione che sono comprese in questa if. In pratica sotto la if ci finisce un main provvisorio di test della tua classe. E perchè ci mettiamo la 'if' ? Perchè poi nel modulo torneo.py dove importerai scacchi.py , al momento di importare vengono eseguite tutte le istruzioni non indentate e quindi anche la famosa 'if'. Però in questo caso (per nostra fortuna) __name__ non vale __main__ e quindi la if non viene eseguita. Sono certo che su questa lista ci siano mille persone più brave di me a spiegartelo ma nel caso non ci fossero volontari ho fatto del mio meglio ;) Ciao G _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python