使用下面的瓶子应用程序重现。
我有一个列表属性的类。我在每个请求上创建了这个类的新实例,并将一个元素追加到类的list属性中。然后,我将列表的长度打印回给用户。
为什么多次访问网页时计数会增加?如果我将属性设置为类'init方法中的空列表,一切正常。
我正在使用gunicorn运行应用程序,并在nginx后面代理gevent worker
import bottle
class MyClass:
my_list = []
def __init__(self):
pass
def add_to_list(self, var):
self.my_list.append(var)
app = bottle.app()
@app.route('/')
def index():
var = 'test'
my_class = MyClass()
my_class.add_to_list(var)
return str(len(my_class.my_list))
if __name__ == '__main__':
app.run(host="localhost", port=80)
答案 0 :(得分:0)
类属性在类的所有实例之间共享。您正在寻找的是实例属性:
class MyClass:
def __init__(self):
self.my_list = []
def add_to_list(self, var):
self.my_list.append(var)
有关详细信息,请参阅this问题。