我的印象是,类变量在该类的所有实例之间共享其值。我注意到类似列表的集合会发生这种情况(将一个条目附加到obj'r',然后从obj'l'打印该列表)会显示两个列表相同的列表。但是,如果我更改实际类变量的值,那么在所有实例上都看不到相同的更新吗?
class Dog:
kind = 'dog'
classlist = []
def __init__(self, name):
self.name = name
self.mylist = []
r = Dog('rufus')
l = Dog('lasy')
r.classlist.append(1) #appends 1 to both r and l's list
print(r.classlist) #will show 1
print(l.classlist) #will show 1
r.kind = 'cat' #updates value of kind for only 'r'. Not for 'l'??
print(r.kind) #will show cat
print(l.kind) #should show dog.. but shows cat?
我注意到“ classlist”已针对所有实例进行了更新。但是,当更新类变量“种类”时,它仅在一个实例中而不是在所有实例中更新。预期输出在所有情况下都会发生变化。
实际结果: [1] [1] 猫 狗