我有一个名为的文件client_simulator.py ,它包含一个名为的类Client_simulator,用于模拟客户端行为。
我有一个名为其他文件pool_manager.py,并没有类,它有一个__main__和很多功能,基本上,我想打电话给一个名为方法generator的Client_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,这就是为什么有这些基本疑问。提前致谢
@blckknght 是对的,但如果你确实需要这样做,请使用下面的反模式
import subprocess
subprocess.run('python D:/your_script.py')
Run Code Online (Sandbox Code Playgroud)
我认为你有点困惑,至少在术语上,如果不是在代码中的话。
当您使用 保护一段代码时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()了。