Non riesco a trovare il trucco if __name == '__main__'
per funzionare in un ambiente IPython, Spyder. Ho provato ogni impostazione data in questa discussione: if __name__ == '__main__' in IPythonse __name__ == '__main__' non funziona ipython
Qui sono i miei moduli super-semplificato
Module1.py
Class UnitTest():
print 'Mod1 UnitTest!'
if __name__ == '__main__':
UnitTest()
Module2.py
import Module1
Class UnitTest():
print 'Mod2 UnitTest!'
if __name__ == '__main__':
UnitTest()
Così corro Module2.py e sto sempre vedendo sia Mod2 UnitTest
sia Mod1 UnitTest
stampati. Questi sono in esecuzione in un kernel IPython. Voglio solo il messaggio Mod2 UnitTest
da visualizzare.
Qualche idea su cosa succede?
Si utilizza classi invece di funzioni. Il codice in una dichiarazione di classe viene eseguito al momento dell'importazione. – Kevin
Sì. Vedi la mia risposta qui sotto. Errore totalmente stupido non rendersi conto che il codice nella dichiarazione di classe viene eseguito al momento dell'importazione !!! – AZhao