1. 程式人生 > >Python類變量和實例變量區別

Python類變量和實例變量區別

color python 輸入 style 語句 self 變量名 pri col

深入理解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.y a = aa() print (a.add()) //輸出23 # 下邊兩條指令各起何作用?結果是輸出兩個 20 麽?還是兩個13?還是? aa.w = 20 a.w = 13 print (aa.w, a.w) //輸出20 13 # 程序繼續增加如下,怎樣理解這t和q呢?他們是實例變量 a.t = 14 a.q = 15 print (a.t, a.q) //輸出14 15
# 程序繼續增加如下,怎樣理解這m和n呢?他們是類變量 aa.m = 30 aa.n = 40 print (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類變量和實例變量區別