例1
class A():
books=[‘三国’,‘西游记’]
def init(self,name):
self.name=name
x=A(‘张三’)
y=A(‘李四’)
x.books[0]=‘水浒’
print(y.books)
print(A.books)
类变量是可修改类型的,当x.books[0]=‘水浒’,类变量发生变化,但是变量a,b指向的类变量地址没有改变所以两个不同的对象都输出一样的结果
例2
class A():
books=[‘三国’,‘西游记’]
def init(self,name):
self.name=name
x=A(‘张三’)
y=A(‘李四’)
x.books[0]=‘水浒’
print(y.books)
print(A.books)
x.books=[‘红楼梦’,‘大秦帝国’]
print(x.books)
print(y.books)
print(A.books)
此处,x.books=[‘红楼梦’,‘大秦帝国’],类变量已经被重新赋值,即成了内部变量,指向了新的内存地址,所以对象a指向了[‘红楼梦’,‘大秦帝国’],但是y,A依旧指向的是旧的类变量,所以还是[‘三国’,‘西游记’]
为了方便理解,再次附上老师的图
在这里插入图片描述