1. 程式人生 > >【Python】類的屬性和方法的引數加不加self的區別

【Python】類的屬性和方法的引數加不加self的區別

先看一段程式碼

class Test(object):
    ID = 1

    def __init__(self):
        pass

    def prtID(self):
        print(self.ID)
    
    def classplusOne(self):
        Test.ID += 1
    
    def ObjplusOne(self):
        self.ID += 1

t1 = Test()
t2 = Test()
t1.classplusOne()
這裡會發現t1對ID進行了修改卻影響了t2的ID, 這就說明ID屬於Test類,而非它的物件,換句話說這個屬性是全體Test例項共用的。這是因為self的意思同c++的this指標,它代表了類當前的例項,所以加了self的屬性就是類例項的屬性,不加就是類的屬性,這同c++中靜態類變數的含義是一樣的。