如果 __name__ == '__main__' 不工作 ipython
if __name__ == '__main__' not working ipython
我无法让 if __name == '__main__'
技巧在 IPython、Spyder 环境中工作。我已经尝试了这个线程中给出的每一种方法:
if __name__ == '__main__' in 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
消息。
知道发生了什么事吗?
好吧,出于尴尬,我早些时候删除了这个问题,但最好分享一下,以防其他新手看到这个问题。
我忘记将 UnitTest 行放在 __init__
方法中。因此,单元测试每次都是 运行 定义 class 时,而不是实例化对象时。代码应该是:
Module1.py
Class UnitTest():
def __init__(self):
print 'Mod1 UnitTest!'
if __name__ == '__main__':
UnitTest()
Module2.py
import Module1
Class UnitTest():
def __init__(self):
print 'Mod1 UnitTest!'
if __name__ == '__main__':
print 'Mod2 UnitTest!'
我无法让 if __name == '__main__'
技巧在 IPython、Spyder 环境中工作。我已经尝试了这个线程中给出的每一种方法:
if __name__ == '__main__' in 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
消息。
知道发生了什么事吗?
好吧,出于尴尬,我早些时候删除了这个问题,但最好分享一下,以防其他新手看到这个问题。
我忘记将 UnitTest 行放在 __init__
方法中。因此,单元测试每次都是 运行 定义 class 时,而不是实例化对象时。代码应该是:
Module1.py
Class UnitTest():
def __init__(self):
print 'Mod1 UnitTest!'
if __name__ == '__main__':
UnitTest()
Module2.py
import Module1
Class UnitTest():
def __init__(self):
print 'Mod1 UnitTest!'
if __name__ == '__main__':
print 'Mod2 UnitTest!'