Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tornado获取对RequestHandler中实例变量的引用_Python_Tornado - Fatal编程技术网

Python Tornado获取对RequestHandler中实例变量的引用

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_

在编写tornado Http服务器时,我很难从单独的RequestHandler对象访问我的主类中的实例变量,该类包含tornado应用程序对象以及start方法。考虑下面的粗糙的例子,

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

谢谢你提出这个问题:我一直在努力解决这个问题,因为
龙卷风的独特结构