如果__name__ ==' __ main __':来自另一个模块中的函数的一个模块中调用

时间:2014-10-20 10:13:37

标签: python function python-2.7 module main

我需要调用if __name__ == '__main__',在一个模块Module 1中调用几个类,在函数function1中调用第二个模块中的类, Module 2

我无法在def main()中使用Module 1 - 解决方案而不是if __name__ == '__main__',因为该模块在{{1}中有多个类和函数连接到Class_1 }}仅适用于Module 1print('I am:', __name__)

所以我的问题是如何在if __name__ == '__main__': if __name__ == '__main__'的{​​{1}} Class_1() function1中调用main Class_2()

第1单元

Module 2

第2单元

print('I am:', __name__)

class Class_1():
   ....code...

# calling everything in the module that
if __name__ == '__main__':

2 个答案:

答案 0 :(得分:4)

if __name__ == '__main__'主要用于制作单个python脚本可执行文件。例如,您定义了一个执行某项操作的函数,您可以通过导入并运行它来使用它,但是您还希望在使用python module1.py运行python脚本时执行该函数。

对于你问的问题,我能想到的最好的是你想要在调用“module2.py”时运行“module1.py”中定义的函数。这将是这样的:

### module1.py:
def main():
    # does something
    ...

if __name__ == '__main__':
    main()

### module2.py:
from module1 import main as main_from_module_one

if __name__ == '__main__':
    main_from_module_one()  # calling function main defined in module1

答案 1 :(得分:1)

if __name__...整点是指当模块作为脚本执行时才需要的东西,即它是否恰好是从另一个类导入。所以不,你不需要这样做。

你解释为什么你不能把东西放到一个函数中是没有意义的;这正是你应该做的。