Mam problem z uzyskaniem sztuczki if __name == '__main__'
do pracy w środowisku IPython, Spyder. Próbowałem każde podejście podane w tym wątku: if __name__ == '__main__' in IPythonjeśli __name__ == '__main__' nie działa ipython
Oto moje bardzo uproszczone moduły
Module1.py
Class UnitTest():
print 'Mod1 UnitTest!'
if __name__ == '__main__':
UnitTest()
Module2.py
import Module1
Class UnitTest():
print 'Mod2 UnitTest!'
if __name__ == '__main__':
UnitTest()
Więc biegnę Module2.py i zawsze widzę drukowane zarówno Mod2 UnitTest
i. Są one wykonywane w jądrze IPython. Chcę wyświetlić tylko komunikat Mod2 UnitTest
.
Każdy pomysł co się dzieje?
Używasz klas zamiast funkcji. Kod w deklaracji klasy jest uruchamiany w czasie importu. – Kevin
Yup. Zobacz moją odpowiedź poniżej. Całkowicie głupi błąd, nieuświadamiając, że kod w deklaracji klasowej jest uruchamiany w czasie importu !!! – AZhao