python程式設計(類變數和例項變數)
阿新 • • 發佈:2019-01-27
【 宣告:版權所有,歡迎轉載,請勿用於商業用途。 聯絡信箱:feixiaoxing @163.com】
關於類變數和例項變數,一直不是很清楚。所以,想做幾個實驗,徹底解決這個問題。為此,我們設計了三個實驗。
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、結論
通過實驗,我們可以得出這麼一些結論,即例項建立的時候,引用的變數直接指向類變數。如果此時例項變數沒有做出修改,那麼類變數修改為什麼資料,例項變數就會列印什麼資料。然而,一旦 例項變數資料發生了改變,它就會在自己的記憶體空間重新給這個變數分配一段空間,這個時候,類變數的修改就和例項變數沒有什麼關係了。