BaseHTTPRequestHandler with custom instance BaseHTTPRequestHandler with custom instance python python

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()