2

GUI、HTTP、および TCP サーバーの両方を含む小さなアプリケーションを作成しています。GUI は、HTTP および TCP サーバーからクライアントに返される応答を制御します。サーバーとして HTTPServer および SocketServer.TCPServer クラスを使用し、BaseHTTPRequestHandler と StreamRequestHandler の両方のサブクラスを使用しています。しかし、まずは HTTP 側に焦点を当てましょう。

HTTPServer がリクエストを受け取ると、GUI の状態を確認し、適切に応答する必要があります。GUI を指す HTTPServer にメンバー変数を追加しましたが、BaseHTTPRequestHandler サブクラスからこのフィールドにアクセスする良い方法がわかりません。これはどのように行うことができますか?

以下は私が現在持っているコードですが、Python は例外をスローしますMyHTTPHandler instance has no attribute 'server'

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()
        [...]
4

1 に答える 1

6

BaseHTTPRequestHandler には組み込みの属性がありますserverself._server継承されたクラスで別のものを設定している理由がわかりません。get_interface()メソッド内のコードもコピーできると便利です。また、この「サーバー」引数は何ですか? 継承のインスタンスHttpServer?

于 2011-04-09T02:53:45.350 に答える