pythonhttpserverbasehttpserverrequesthandlerbasehttprequesthandler

BaseHTTPRequestHandler with custom instance


this is my http server:

from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer

class test:
    def show(self):
        return "aaaa"

class http_server:
    def __init__(self, t1):
        self.t1 = t1
        server = HTTPServer(('', 8080), myHandler)
        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.t1.show()) #Doesnt work
        return

class main:
    def __init__(self):
        self.t1 = test()
        self.server = http_server(self.t1)

if __name__ == '__main__':
    m = main()

I need to acces instance t1 inside of myHander.

Is there any way how to do it ?

Thanks!


Solution

  • there a way to do it is to set the property to the class :

    from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
    
    class 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
            return
    
    class 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