2017-06-15 141 views
1

如果我定義了一個簡單的類類變量是否可變?

class someClass(): 
    var = 1 

x = someClass() 
someClass.var = 2 

這將使x.var等於2,這是混淆是因爲通常 一個類似於此類似:

a = 1 
b = a 
a = 2 

將離開b不變,因爲b==1。那麼爲什麼這與類變量不一樣?區別在哪裏?可以調用所有類變量可變嗎? 通過某種方式,類變量的工作方式更像是將列表分配給a=[1]並執行a[0]=2

基本上問題是如何x.var acessing someClass.var它必須是不同的東西,然後在Python中設置兩個變量相等時使用。發生什麼事?

+2

現在設置'x.var = 3',看看會發生什麼'someClass.var' –

+0

我知道,但那不是點 – pindakaas

+1

不,這*是*點。從本質上講,當你做'SomeClass.var'和'someInstance.var' **不一定是同一件事**。 –

回答

1

var是一個靜態類變量someClass

當你伸手拿到x.vary.varsome_other_instance.var,則需要訪問同一個變量,不是一個實例得出一個(只要你沒有明確其分配到該實例的屬性)。

+1

那麼當我使用x.var = 2時,我基本上在x中創建了一個新的變量,在這個實例中在someClass中隱藏了變量? – pindakaas

+0

@pindakaas賓果! – deceze

+0

@花生醬是。 – Uriel