【发布时间】:2015-09-12 13:35:51
【问题描述】:
我无法让 if __name == '__main__' 技巧在 IPython、Spyder 环境中工作。我已经尝试了这个线程中给出的所有方法:
if __name__ == '__main__' in IPython
这是我的超级简化模块
模块1.py
Class UnitTest():
print 'Mod1 UnitTest!'
if __name__ == '__main__':
UnitTest()
模块2.py
import Module1
Class UnitTest():
print 'Mod2 UnitTest!'
if __name__ == '__main__':
UnitTest()
所以我运行 Module2.py 并且我总是看到 Mod2 UnitTest 和 Mod1 UnitTest 打印。这些在 IPython 内核中执行。我只想显示 Mod2 UnitTest 消息。
知道发生了什么吗?
【问题讨论】:
-
您使用的是类而不是函数。类声明中的代码在导入时运行。
-
是的。请看下面我的回答。完全愚蠢的错误没有意识到类声明中的代码是在导入时运行的!!!