2017-11-28 1 views
-2

파일 이름이 client_simulator.py이고 클라이언트 동작을 시뮬레이트하는 클래스 Client_simulator이 있습니다.파이썬의 다른 파일에서 __main__을 호출합니다.

내가 pool_manager.py라는 이름의 다른 파일을 가지고는 더 클래스가 없습니다, 그것은 하나의 __main__과 기능을 많이 가지고 있으며, 기본적으로, 나는 pool_manager.py의 방법 중 하나에서 Client_simulator classgenerator라는 이름의 메소드를 호출합니다. 다음과 같이

enter image description here

client_simulator.py의 기본 구조는

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

if __name__ == '__main__': 
Client_simulator().generator() 

나는 다음과 같은 오류

을 얻고있다

def start_client_simulator(): 

    client_simulator.Client_simulator().generator() 

if __name__ == "__main__": 
    start_client_simulator() 

을 다음과 같이 파일 pool manager.py의 기본 구조는 'module' object is not callable

P.S : generator() 대신 __main __으로 전화를 걸고 싶습니다. 어떻게해야합니까?

저는 최근에 자바에서 파이썬으로 옮겨 가고 있습니다. 그래서이 기본적인 의심을 가지고 있습니다. 미리 감사드립니다.

+0

나는 이해할 수 없다. 주 전화를 걸었을 때도 발전기 호출이 있었으므로 올바르게 호출됩니다. 직접 전화를 걸고 싶은가요? –

+0

주저우 전화하는 방법 알려주세요. 예를 들어,'client_simulator.main()'을 시도했지만 client_simulator.main()을 사용하여 동일한 에러 –

+0

을주었습니다. '모듈'객체에 'main'속성이 없습니다. –

답변

1

적어도 코드에는 어쩌면 약간의 혼동이있을 것이라고 생각합니다.

if __name__ == "__main__": 코드 섹션을 보호 할 때 __main__ 기능을 정의하지 않습니다. 전역 변수 __name__ (파이썬 인터프리터에 의해 자동으로 설정 됨)을 읽고 해당 값을 문자열과 비교하는 것은 정상적인 if 문입니다.

그래서 다른 모듈에서 호출 할 __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() 

pool_manager.py 파일이 너무 client_simulator.main()를 호출 할 수 있습니다.

관련 문제