我运行以下python代码。
class A():
def __init__(self,l=[]):
self.k = l
a = A()
b = A()
a.k.append(5)
print id(a.k) == id(b.k)
print b.k
结果是:
True
[5]
我不知道为什么 a.k和b.k拥有相同的内存地址。
答案 0 :(得分:2)
因为当 defined功能时,您} 创建了<{1>}的空列表,而不是每次都函数被调用。
因此,两个类的l
将指向相同的列表,因此更改一个将更改另一个(或者更准确地说,更改一个将更改仅一个)。
如果您想确保该类的每个对象都获得其拥有的列表,只需使用切片方法:
l