У меня возникли проблемы с получением трюка if __name == '__main__'
для работы в среде IPython, Spyder. Я перепробовал все подходы, приведенные в этой теме: if __name__ == '__main__' in IPythonif __name__ == '__main__' не работает ipython
Вот мои супер упрощенные модули
Module1.py
Class UnitTest():
print 'Mod1 UnitTest!'
if __name__ == '__main__':
UnitTest()
Module2.py
import Module1
Class UnitTest():
print 'Mod2 UnitTest!'
if __name__ == '__main__':
UnitTest()
Так я бегу Module2.py и я всегда вижу как Mod2 UnitTest
, так и Mod1 UnitTest
. Они выполняются в ядре IPython. Я хочу только сообщение Mod2 UnitTest
для отображения.
Любая идея, что случилось?
Вы используете классы вместо функций. Код в объявлении класса запускается во время импорта. – Kevin
Yup. См. Мой ответ ниже. Полностью глупая ошибка, не реализующая код в объявлении класса, запускается во время импорта !!! – AZhao