2013-02-06 59 views
1

裏面Django的價值觀我有:對象屬性包含之前instatiaton

class A(object): 
    _attribute = [] 

當我創建該對象在執行到Django.runserver一切的請求工作正常。在此步驟中,我填入a = A()._attribute.extend(['string',])

當我執行相同的請求中的第二時間我看到BEFORE實例化的Memcached接通對象

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

。但是,在我的理解不緩存這些對象,因此不能負責

我從來沒有見過這樣,在過去的任何東西。謝謝你的幫助!!!

回答

4

_attribute被附加到整個類,所以所有實例將具有相同的_attribute值。

爲了避免這種情況,

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

您使用的是類屬性,它是可變的使用實例變量。 _attribute是不是一個實例中的一員,但類的A本身。當你正在使用extend,你只要蟒蛇正在運行時更改所有實例該值。

相關問題