<分区> 分区>
所有实例的默认参数列表都是同一个对象吗?
class X():
def __init__(self,a=[]):
self.member=a
print id(a)
k=X([1,2,3])
g=X([1,2,3])
t=X()
h=X()
输出结果让我吃惊:
140072782781832
140072782901976
140072782816536
140072782816536
如您所见,当 a 等于 [1,2,3] 时,id 不同,但当 a 为空时,id 保持不变。但是,如果我删除 self.member,现在代码如下所示:
class X():
def __init__(self,a=[]):
print id(a)
k=X([1,2,3])
g=X([1,2,3])
t=X()
h=X()
输出变成这样:
140033294171528
140033294171528
140033294206232
140033294206232
当 a 等于 [1,2,3] 时,id 保持不变。
我完全糊涂了...谁能解释一下?
