这很奇怪,令人沮丧。所以我有一个带有默认参数构造函数的类。
class part:
def __init__(self, num, center=[0, 0, 0]):
self.center = center
self.center[1] = num
a = part(1)
print(a.center)
b = part(2)
print(a.center)
print(b.center)
如果我在上面运行代码,我会得到
[0, 1, 0]
[0, 2, 0]
[0, 2, 0]
不是我真正想要的。
我找到了下面已经回答的解决方案。但是,我不知道为什么Python这样设计,这非常令人困惑。
解决方案是将参数传递给默认构造函数。
class part:
def __init__(self, num, center=[0, 0, 0]):
self.center = center
self.center[1] = num
a = part(1, [0,0,0])
print(a.center)
b = part(2, [0,0,0])
print(a.center)
print(b.center)
输出
[0, 1, 0]
[0, 1, 0]
[0, 2, 0]