Я собираю небольшое приложение, которое включает серверы с графическим интерфейсом, HTTP и TCP. GUI контролирует ответы, возвращаемые с серверов HTTP и TCP клиентам. В качестве серверов я использую классы HTTPServer и SocketServer.TCPServer с подклассами для BaseHTTPRequestHandler и StreamRequestHandler. Но для начала давайте сосредоточимся на стороне HTTP.
Когда HTTPServer получает запрос, он должен проверить состояние графического интерфейса и ответить соответствующим образом. Я добавил переменную-член в HTTPServer, указывающую на GUI, но пока не могу найти хороший способ получить доступ к этому полю из подкласса 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()
[...]