標籤:結果 self 一個 理解 nbsp color div 怎樣 bsp
深入理解python類的執行個體變數和類變數 Python變數的本質:被賦值
1 普通python變數(非類相關變數)很容易理解,在被賦值後即變數存在,可讀可寫
2 Python類的變數(類變數和執行個體物件變數)以某種方式在某地方被賦值,即存在,可被讀寫
2.1 Python類變數被賦值
(1)類的設計裡,
class裡def外,通過變數名能被賦值
def裡通過類對象即類名字的點運算變數名可被賦值
(2)程式裡
通過類對象(類名字)的點運算類名字也可被賦值
2.2 Python執行個體物件變數被賦值
(1)類的設計時
def裡通過self點運算變數名能被賦值,不一定非在init裡,其他已被調用的方法函數裡也行
(2)程式裡
通過執行個體對象的點運算變數名可被賦值
例子:
class aa: w = 10 def __init__(self): self.x = 11 self.y = 12 def add(self): return self.x + self.ya = aa()print (a.add()) //輸出23# 下邊兩條指令各起何作用?結果是輸出兩個 20 嗎?還是兩個13?還是?aa.w = 20a.w = 13print (aa.w, a.w) //輸出20 13# 程式繼續增加如下,怎樣理解這t和q呢?他們是執行個體變數a.t = 14a.q = 15print (a.t, a.q) //輸出14 15# 程式繼續增加如下,怎樣理解這m和n呢?他們是類變數aa.m = 30aa.n = 40print (aa.m, aa.n) //輸入30 40# 好了再來個提升吧# 程式繼續增加,下列三個print語句都能正確執行嗎?為何?b = aa()print (b.x, b.y) //正確輸出11 12
print (b.t, b.q) //出錯,因為不是一個執行個體了
print (b.m, b.n) //正確輸出30 40
Python類變數和執行個體變數區別