if __name__ =='__ main__'不工作ipython

AZh*_*hao 7 python ipython spyder

我无法if __name == '__main__'在IPython,Spyder环境中使用这个技巧.我已经尝试了这个线程中给出的每个方法: 如果在IPython中__name__ =='__ main__'

这是我的超级简化模块

Module1.py

Class UnitTest():
    print 'Mod1 UnitTest!'

if __name__ == '__main__':
    UnitTest()
Run Code Online (Sandbox Code Playgroud)

Module2.py

import Module1

Class UnitTest():
    print 'Mod2 UnitTest!'

if __name__ == '__main__':
    UnitTest()
Run Code Online (Sandbox Code Playgroud)

所以我运行Module2.py,我总是看到两个Mod2 UnitTestMod1 UnitTest打印出来.这些是在IPython内核中执行的.我只Mod2 UnitTest想要显示消息.

知道怎么了?

AZh*_*hao 5

好吧,出于尴尬,我早些时候删除了这个问题,但也不妨分享一下,以防其他新手看到这一点。

我忘了把 UnitTest 行放在 __init__方法中。因此,每次定义类而不是实例化对象时,都会运行单元测试。代码应该是:

模块1.py

Class UnitTest():
    def __init__(self):
        print 'Mod1 UnitTest!'

if __name__ == '__main__':
    UnitTest()
Run Code Online (Sandbox Code Playgroud)

模块2.py

import Module1

Class UnitTest():
    def __init__(self):
        print 'Mod1 UnitTest!'

if __name__ == '__main__':
    print 'Mod2 UnitTest!'
Run Code Online (Sandbox Code Playgroud)