これは私のhttpサーバーです:
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()
MyHander内のインスタンスt1にアクセスする必要があります。
それを行う方法はありますか?
ありがとう!
それを行う方法は、プロパティをクラスに設定することです。
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()
MyHandlerを使用するすべての場所で、t1の同じインスタンスになることに注意する必要があります。
T1が各インスタンスで同じではない、少し優れたバージョン。
from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
class 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
return
class main:
def __init__(self):
self.t1 = test()
self.server = http_server(self.t1)
if __name__ == '__main__':
m = main()
私はかなり遅れて答えていることを知っていますが、それはおそらく将来の視聴者にとって役立つかもしれません。 server
オブジェクトのBaseHTTPRequestHandler
変数を使用して求められたように、t1
にアクセスする非常に簡単な方法があります。
from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
class 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())
return
class main:
def __init__(self):
self.t1 = test()
self.server = http_server(self.t1)
if __name__ == '__main__':
m = main()