从python中的另一个文件调用__main__

Ama*_*ngh 1 python python-2.7

我有一个名为的文件client_simulator.py ,它包含一个名为的类Client_simulator,用于模拟客户端行为。

我有一个名为其他文件pool_manager.py,并没有类,它有一个__main__和很多功能,基本上,我想打电话给一个名为方法generatorClient_simulator class从的方法之一pool_manager.py

在此处输入图片说明

基本结构client_simulator.py如下

class Client_simulator(object):
    def generator(self):

if __name__ == '__main__':
Client_simulator().generator()
Run Code Online (Sandbox Code Playgroud)

文件的基本结构pool manager.py如下

def start_client_simulator():

     client_simulator.Client_simulator().generator()

if __name__ == "__main__":
   start_client_simulator()
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

'module' object is not callable

PS:我要打电话 __main __而不是`generator()',怎么做?

我最近从 java 转向 python,这就是为什么有这些基本疑问。提前致谢

Exi*_*ang 7

@blckknght 是对的,但如果你确实需要这样做,请使用下面的反模式

import subprocess
subprocess.run('python D:/your_script.py')
Run Code Online (Sandbox Code Playgroud)


Blc*_*ght 6

我认为你有点困惑,至少在术语上,如果不是在代码中的话。

当您使用 保护一段代码时if __name__ == "__main__":,您并不是在定义__main__函数。它只是if读取全局变量__name__(由 Python 解释器自动设置)并将其值与字符串进行比较的普通语句。

所以不能__main__从另一个模块调用。如果您希望该块的内容可以从其他地方调用,您应该将它放在一个函数中,您可以根据需要从该if __name__ == "__main__":块和其他模块调用该函数。

所以试试这个client_simulator.py

class Client_simulator(object):
    def generator(self):

def main():    # you can name this whatever you want, it doesn't need to be main()
    Client_simulator().generator()

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

pool_manager.py文件可以打电话client_simulator.main()了。