如果 __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 UnitTestMod1 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!'