最近发现在使用类变量和实例变量时发现了一些小小的区别,下面写了一个小的demo演示,区别都卸载注释里了。
class A:
# 类变量
aa = 1
def __init__(self, x, y):
# x,y属于实例的变量
self.x = x
self.y = y
if __name__ == '__main__':
# a是一个实例,A是一个类
a = A(2,3)
# 实例a可以向上查找类变量aa
print(a.x, a.y, a.aa) # 打印结果2 3 1
# 类变量aa可以通过A这个类访问
print(A.aa) # 打印结果1
# 实例变量不能通过A这个类访问
# print(A.x) # 打印报错
# 通过类对类属性进行修改,后面无论是通过实例还是类进行调用都会得到修改后的值。相当于直接修改了类A的aa变量
A.aa = 11
print(a.aa,A.aa) # 打印结果都是11
# 通过实例对类属性进行修改,无法修改类变量。在实例a里新建了一个aa变量,对类变量(A.aa)无影响
a.aa = 100
print(a.aa,A.aa) # 打印结果a.aa是100,A.aa是11