Tornado / Python:为什么我不能在类中重置变量

时间:2013-02-23 15:09:34

标签: python class variables tornado

简化代码如下:

....

class indexHandler(tornado.web.RequestHandler):
    a=[]

    def callback(self,response):
        #Do some other things, like write into database
        self.a=[]


    def get(self):
        print self.a
        self.a.append('abc')

        client=tornado.httpclient.AsyncHTTPClient()
        client.fetch('http://google.com',self.callback)

        self.write('OK')
        ....

当我第一次访问该页面时,shell会显示 []。 页面重新加载后,会显示['abc'],再次重新加载,然后显示['abc','abc'],依此类推。

为什么a不会重置?

1 个答案:

答案 0 :(得分:1)

感谢Martijn和mkind! 你们都是对的,我用__init__来解决问题。

代替a=[]
def initialize(self):
    self.a=[]

可以解决问题。

请注意,仅def __init__(self)不起作用,Tornado提供initialize函数来替换它。请在此处阅读:python/tornado – Why am I getting this error?