2012-07-06 2 views
1

이/HTTP 서버 파이썬 응용 프로그램을 중지 클래스 처리기에서 개체를 만드는 방법 전화, 나는 현재 다음 클래스 설정을 가지고 :OOP : 나는 간단한 시작을 만드는 중이 야

#The Tkinter interface for the application 
class Application(): 
    def __init__(self,win): 
     self.serverThread=ServerThread() 

     self.output=Tkinter.Text(win) 
     self.output.pack() 


#The Server Thread 
class ServerThread(): 
    class ServerHandler(BaseHTTPServer.BaseHTTPRequestHandler): 
     def log_message(msg): 
      //here's where I'm confused 
    def __init__(self): 
     self.server=BaseHTTPServer.HTTPServer(('',8000),self.ServerHandler) 

올바른 것이 무엇 방법은 텍스트를 추가하려면 글로벌 출력 변수를 사용하지 않고 ServerHandler 클래스에서 내 응용 프로그램의 출력 필드? ServerHandler는 ServerThread 객체에 대한 참조를 가지고 있습니까?

편집 : 내가 정말로 찾고있는 것은 다음과 같습니다. 어떻게하면 BaseHTTPServer.HTTPServer 클래스로 전달되는 ServerHandler가 전역 변수를 사용하지 않고 생성 된 ServerThread 및 Application 개체에 대해 알 수 있습니까?

+0

'ServerThread' 클래스가 어떻게 작동하는지 명확하지 않습니다. 'self'는 클래스 선언에 정의되지 않습니다. '__init__' 메소드에 넣으려고했다는 뜻입니까? –

+0

내가 한 것처럼, 내 코드에서 그런 식으로, 그냥 질문에 너무 많이 제거했습니다. 텍스트 필드에 대한 전역 출력 참조로 작업하는 코드가 있지만 처리기에 대한 ServerThread 개체 또는 Application 개체에 대한 참조를 전달할 수있는 방법이있는 경우이를 수행하지 않아도됩니다. –

답변

0

로깅 기능을 찾으려면 표준 logging 모듈을 확인하는 것이 좋습니다. 결과적으로 원하는만큼 많은 "글로벌"로깅 출력을 제공합니다. 또한 분명히 표준이라는 이점이 있습니다. 많은 사람들이이 방법을 사용함에 따라 로깅 코드를보다 읽기 쉽게 만듭니다.

관련 문제