龙卷风获取请求处理程序中的实例变量的引用

2024-09-28 17:30:05 发布

您现在位置:Python中文网/ 问答频道 /正文

在编写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

我需要在SomeHandlerpost()方法中访问MyServer的ref{u对象实例,并且我需要确保在{}中访问的ref}对象是同一个对象,如果它在change_ref_object()中发生了变化。在

Somehandler仅在创建pythonTornado web服务器(应用程序)时作为类引用,而且还不清楚在MyServer中更改临时ref_对象时,如何访问{}的实例来更改其临时ref_对象。在

归根结底,我不明白SomeHandler的实例在MyServer的作用域(或者具体地说,MyServer的application对象)中的何处。在


Tags: 对象实例方法selfrefweb应用程序object
1条回答
网友
1楼 · 发布于 2024-09-28 17:30:05

创建Application对象时,可以将ref_object实例作为通常用于定义处理程序的元组的第三个参数放入dict中,将其传递给SomeHandler。因此,在MyServer.__init__中:

self.application = tornado.web.Application([
    (r"/test", SomeHandler, {"ref_object" : self.ref_object}),
])

然后将initialize方法添加到SomeHandler

^{pr2}$

相关问题 更多 >