BaseHTTPRequestHandler with custom instance
Slightly better version, where t1 will not be the same for each instance.
from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServerclass test: def show(self): return "aaaa"class http_server: def __init__(self, t1): def handler(*args): myHandler(t1, *args) server = HTTPServer(('', 8080), handler) server.serve_forever()class myHandler(BaseHTTPRequestHandler): def __init__(self, t1, *args): self.t1 = t1 BaseHTTPRequestHandler.__init__(self, *args) def do_GET(self): self.send_response(200) self.send_header('Content-type','text/html') self.end_headers() self.wfile.write(self.t1.show()) #Doesnt work returnclass main: def __init__(self): self.t1 = test() self.server = http_server(self.t1)if __name__ == '__main__': m = main()
there a way to do it is to set the property to the class :
from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServerclass test: def show(self): return "aaaa"class http_server: def __init__(self, t1): myHandler.t1 = t1 server = HTTPServer(('', 8080), myHandler) server.serve_forever()class myHandler(BaseHTTPRequestHandler): t1 = None def do_GET(self): self.send_response(200) self.send_header('Content-type','text/html') self.end_headers() self.wfile.write(self.t1.show()) #Doesnt work returnclass main: def __init__(self): self.t1 = test() self.server = http_server(self.t1)if __name__ == '__main__': m = main()
You have to be careful that's every where you use myHandler that's will be the same instance of t1
I know I'm answering pretty late, but that could probably be helpful for future viewers. There is a really easy way to access t1
like it was asked by using the server
variable of the BaseHTTPRequestHandler
object:
from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServerclass test: def show(self): return "aaaa"class http_server: def __init__(self, t1): server = HTTPServer(('', 8080), myHandler) server.t1 = t1 server.serve_forever()class myHandler(BaseHTTPRequestHandler): def do_GET(self): self.send_response(200) self.send_header('Content-type','text/html') self.end_headers() self.wfile.write(self.server.t1.show()) returnclass main: def __init__(self): self.t1 = test() self.server = http_server(self.t1)if __name__ == '__main__': m = main()