对象属性包含instatiaton之前的值

时间:2013-02-06 08:11:35

标签: python django

在Django里面我有:

class A(object):
    _attribute = []

当我在向Django.runserver执行请求时创建对象时,一切正常。在此步骤中,我填写a = A()._attribute.extend(['string',])

当我第二次执行相同的请求时,我看到BEFORE实例化对象

>>> print A._attribute
['string',]

Memcached已开启。但是在我的理解中并没有缓存这些对象,因此无法负责

我以前从未见过这样的事情。谢谢你的帮助!!!

2 个答案:

答案 0 :(得分:4)

_attribute附加到整个类,因此所有实例都具有相同的_attribute值。

要避免这种情况,请使用实例变量

class A(object):
    def __init__(self):
        self._attribute = []

答案 1 :(得分:1)

您正在使用可变的类属性。 _attribute不是实例的成员,而是类A本身的成员。当您使用extend时,只要python正在运行,您就会为所有实例更改该值。