關於類變數和例項變數,一直不是很清楚。所以,想做幾個實驗,徹底解決這個問題。為此,我們設計了三個實驗。
1、直接引用類變數
import os
import sys
class a():
data = 10
a = a()
b = a()
print a.data
print b.data
print a.__dict__
print b.__dict__
通過實驗結果,我們發現a和b中關於data的資料都是10,但是此時a和b的__dict__都沒有資料。
2、修改例項變數
a.data = 11
print a.data
print b.data
print a.__dict__
print b.__dict__
接著1的實驗,我們繼續往下看。為此,先修改a.data =11,檢視**的執**況。通過實驗,我們發現,此時a的資料發生了改變,且列印為11,__dict__也發生了改變。但是b什麼也沒變。
3、修改類變數
a.data = 12
print a.data
print b.data
print a.__dict__
print b.__dict__
在實驗3中,**直接修改了類的變數。此時通過列印,我們看到a的資料仍然為11,但是b的資料已經列印為12。關於__dict__,則a存在data資料,b照樣什麼也沒有。
4、結論
通過實驗,我們可以得出這麼一些結論,即例項建立的時候,引用的變數直接指向類變數。如果此時例項變數沒有做出修改,那麼類變數修改為什麼資料,例項變數就會列印什麼資料。然而,一旦 例項變數資料發生了改變,它就會在自己的記憶體空間重新給這個變數分配一段空間,這個時候,類變數的修改就和例項變數沒有什麼關係了。
Python類變數和例項變數
類體中 所有函式之外 此範圍內定義的變數,稱為類屬性或類變數 類屬性的呼叫方式有 2 種,既可以使用類名直接呼叫,也可以使用類的例項化物件呼叫。需要注意的是 因為類變數為所有例項化物件共有,通過類名修改類變數的值,會影響所有的例項化物件 而不能通過類物件修改類屬性。類體中,所有函式內部 以 self...
python中類變數和例項變數 之例項變數
class test def f self,name self.name name def f1 self print self.name 例項變數為例項物件特有資料 x1 test 例項化test類,建立例項物件x1 x2 test 例項化test類,建立例項物件x2 設定例項屬性 方式1 x1....
python 類 例項 繼承中變數的id是否變化
注 估計這麼亂的 只有我自己能看。通過這段 的驗證,證明了在類和例項的相對關係中,把變數儲存為字串,數字,在各個類 例項之間變換的時候,變數的id是變化的,把變數儲存為列表和字典的時候,id位址是不變的。id位址變與不變用於確認是否是同乙份資料,看一下這個變數是否是全域性變數 class initp...