0
一个simpilified代码如下内部变量:龙卷风/ Python的:为什么我不能复位类
....
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')
....
当我访问该网页第一次,外壳显示 []
。 页面重新载入后,显示['abc']
,重新载入一次,然后显示['abc','abc']
等等。
为什么a
不能重置?
因为'a'不是实例属性,而是* class *属性。它在所有实例中共享。 – 2013-02-23 15:12:16
寻找规范的问题来链接你,因为这是所有的时间* *。尽管如此,我不愿意将它链接到[“Python中最小的惊讶”:可变的默认参数](http://stackoverflow.com/q/1132941)。 – 2013-02-23 15:15:14
有两个变量。前者是类变量a(使用indexHandler.a可访问),另一个是实例变量(使用self.a可访问)。两者没有共同之处。 – mkind 2013-02-23 15:15:49