如何从BaseHTTPRequestHandler访问HTTPServer的成员?
我正在做一个小应用程序,这个程序涉及到图形用户界面(GUI)、HTTP和TCP服务器。这个GUI负责控制HTTP和TCP服务器给客户端返回的响应。我使用了HTTPServer和SocketServer.TCPServer这两个类来作为服务器,并为BaseHTTPRequestHandler和StreamRequestHandler创建了子类。不过我们先专注于HTTP的部分。
当HTTPServer收到请求时,它应该检查GUI的状态,并做出相应的回应。我在HTTPServer中添加了一个指向GUI的成员变量,但我不知道怎么从BaseHTTPRequestHandler的子类中访问这个变量。这个该怎么做呢?
下面是我目前的代码,不过Python抛出了一个异常,提示MyHTTPHandler实例没有'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()
[...]
1 个回答
6
BaseHTTPRequestHandler 这个类里有一个自带的属性叫 server
。我不太明白你为什么在继承的类里还要设置一个 self._server
。如果你能把 get_interface()
方法里的代码也贴出来,那就更好了。另外,这个 'server' 参数是什么呢?是继承自 HttpServer
的一个实例吗?