【Python】类的属性和方法的参数加不加self的区别

时间:2021-10-27 23:47:23

先看一段代码

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++中静态类变量的含义是一样的。