Python Tornado获取对RequestHandler中实例变量的引用
在编写tornado Http服务器时,我很难从单独的RequestHandler对象访问我的主类中的实例变量,该类包含tornado应用程序对象以及start方法。考虑下面的粗糙的例子,Python Tornado获取对RequestHandler中实例变量的引用,python,tornado,Python,Tornado,在编写tornado Http服务器时,我很难从单独的RequestHandler对象访问我的主类中的实例变量,该类包含tornado应用程序对象以及start方法。考虑下面的粗糙的例子, class MyServer(object): def __init__(self): self.ref_object = 0 self.application = #Add tornado.web.applicaiton here def change_
class MyServer(object):
def __init__(self):
self.ref_object = 0
self.application = #Add tornado.web.applicaiton here
def change_ref_object(self, ref_obj):
self.ref_object = ref_obj
def start(self):
#start the server
pass
class SomeHandler(tornado.web.RequestHandler):
def post(self):
#Yada, yada, yada
#Call method on Myserver's ref_object
pass
我需要在SomeHandler
的post()
方法中访问MyServer
的ref\u对象实例,并且我需要确保在SomeHandler
中访问的ref\u对象如果在change\u ref\u object()
中更改,那么它是同一个对象
Somehandler仅在创建python tornado web服务器(应用程序)时作为类引用,不清楚如何访问Somehandler
的此类实例,以便在其在MyServer
中更改时更改其临时ref\u对象
这基本上归结为我不理解某些处理程序的实例在MyServer(或者具体地说,MyServer的应用程序对象)范围内的位置。当您创建
应用程序
对象时,您可以将ref\u对象
实例作为第三个参数放入dict中,传递给通常用于定义处理程序的元组,从而将其传递给SomeHandler
。因此,在MyServer中
self.application = tornado.web.Application([
(r"/test", SomeHandler, {"ref_object" : self.ref_object}),
])
然后将initialize
方法添加到SomeHandler
:
class SomeHandler(tornado.web.RequestHandler):
def initialize(self, ref_object):
self.ref_object = ref_object
def post(self):
self.ref_object.method()
谢谢你提出这个问题:我一直在努力解决这个问题,因为
龙卷风的独特结构