Python類變量和實例變量區別


深入理解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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM