Python中的類變量和成員變量


本文實例形式講解了python的類變量和成員變量用法,對於Python程序設計有一定的參考價值。分享給大家供大家參考。具體如下:

先看看下面這段代碼:

class TestClass(object):


    val1 = 100


    def __init__(self):
        self.val2 = 200


    def fcn(self, val=400):
        val3 = 300
        self.val4 = val
        self.val5 = 500


if __name__ == '__main__':
    inst = TestClass()
    print(TestClass.val1) # 100
    print(inst.val1) # 100
    print(inst.val2) # 200
    #print(inst.val3)
    #print(inst.val4)
    #print(inst.val5)
    inst1 = TestClass()
    inst2 = TestClass()

    print(TestClass.val1)  # 100
    print(inst1.val1)  # 100

    inst1.val1 = 1000
    print(inst1.val1)  # 1000
    print(TestClass.val1)  # 100

    TestClass.val1 = 2000
    print(inst1.val1)  # 1000
    print(TestClass.val1)  # 2000

    print(inst2.val1)  # 2000

    inst3 = TestClass()
    print(inst3.val1)  # 2000

這里,val1是類變量,可以由類名直接調用,也可以由對象來調用;
val2是成員變量,可以由類的對象來調用,這里可以看出成員變量一定是以self.的形式給出的,因為self的含義就是代表實例對象;
val3不是成員變量,它只是函數fcn內部的局部變量;
val4和val5也都不是成員變量,雖是以self.給出,但並沒有在構造函數中初始化。

可以發現:Python的類變量和Java的類變量(靜態變量)不同,類本身擁有自己的類變量(保存在內存)。當通過對象名讀取類變量時,讀取的實際上是該類所持有的類變量。一旦通過對象名寫入類變量時,實際上Python后台立刻拷貝類變量的副本並交給該對象進行寫入操作。從那刻起,該對象讀取和寫入的都是自身持有的類變量的副本。


免責聲明!

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



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