在Django里面我有:
class A(object):
_attribute = []
当我在向Django.runserver
执行请求时创建对象时,一切正常。在此步骤中,我填写a = A()._attribute.extend(['string',])
。
当我第二次执行相同的请求时,我看到BEFORE实例化对象
>>> print A._attribute
['string',]
Memcached已开启。但是在我的理解中并没有缓存这些对象,因此无法负责
我以前从未见过这样的事情。谢谢你的帮助!!!
答案 0 :(得分:4)
_attribute
附加到整个类,因此所有实例都具有相同的_attribute
值。
要避免这种情况,请使用实例变量
class A(object):
def __init__(self):
self._attribute = []
答案 1 :(得分:1)
您正在使用可变的类属性。 _attribute
不是实例的成员,而是类A
本身的成员。当您使用extend
时,只要python正在运行,您就会为所有实例更改该值。