2011-04-09 4 views
2

GUI, HTTP 및 TCP 서버와 관련된 작은 응용 프로그램을 작성 중입니다. GUI는 HTTP 및 TCP 서버에서 클라이언트로 리턴 된 응답을 제어합니다. BaseHTTPRequestHandler 및 StreamRequestHandler에 대한 하위 클래스가있는 서버로 HTTPServer 및 SocketServer.TCPServer 클래스를 사용하고 있습니다. 그러나 시작을위한 HTTP 측면에 초점을 맞출 수 있습니다.BaseHTTPRequestHandler에서 HTTPServer의 멤버에 어떻게 액세스합니까?

HTTPServer가 요청을 받으면 GUI의 상태를 확인하고 적절하게 응답해야합니다. GUI를 가리키는 HTTPServer에 멤버 변수를 추가했지만 BaseHTTPRequestHandler 하위 클래스에서이 필드에 액세스하는 좋은 방법을 알 수 없습니다. 어떻게 할 수 있습니까?

class MyHTTPHandler(BaseHTTPRequestHandler): 
    def __init__(self, request, client_address, server): 
     BaseHTTPRequestHandler.__init__(self, request, client_address, server) 
     self._server = server 

    def do_GET(self): 
     self._server.get_interface().do_something() 
     [...] 

답변

5

BaseHTTPRequestHandler이 속성 server 내장되어 있습니다 : 파이썬은 예외, MyHTTPHandler instance has no attribute 'server'을 던졌습니다하지만 다음

, 나는 현재 가지고있는 코드입니다. 상속 된 클래스에 다른 self._server을 설정하는 이유를 잘 모릅니다. get_interface() 방법으로 코드를 복사 할 수 있다면 유용 할 것입니다. 또한이 '서버'주장은 무엇입니까? 상속 된 HttpServer의 인스턴스?

+0

응답 해 주셔서 감사합니다. 문서를 자세히 읽지 않았습니다. 기본 제공 서버 속성이 필요한 것입니다. 감사! –