类变量不能在所有实例之间共享价值吗?

时间:2019-01-09 16:09:43

标签: python

我的印象是,类变量在该类的所有实例之间共享其值。我注意到类似列表的集合会发生这种情况(将一个条目附加到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] 猫 狗

0 个答案:

没有答案