我正在整理一个涉及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()
[...]
答案 0 :(得分:5)
BaseHTTPRequestHandler具有内置属性server
。不确定为什么要在继承的类中设置另一个self._server
。如果您还可以使用get_interface()
方法复制代码,那将非常有用。这个'服务器'的论点是什么?继承HttpServer
的实例?