我不确定这叫什么,因此很难找到正在发生的事情的文档。我希望这里的某个人能够指出我正确的方向。
在下面的示例中,我有一个列表作为关键字参数的默认值,它的行为方式是我没想到的:
class A(object):
def __init___(self, c=[0,0]):
self.c = c
class B(A):
def __init__(self):
super(B, self).__init__()
a = A()
b = B()
print a.c, b.c # outputs [0, 0] [0, 0]
a.c[1] = 5
print a.c, b.c # outputs [0, 5] [0, 5]
我知道列表是可变的,但我假设在使用列表作为默认关键字参数的情况下,每次都会创建一个“新”列表。是否有文档解释为什么不是这种情况?