Sea*_*ull 0 python constructor
为什么这段代码:
class B:
val = []
for i in range(0, 5):
obj = B()
print(obj.val)
obj.val.append('a')
Run Code Online (Sandbox Code Playgroud)
有这样的输出?
[]
['a']
['a', 'a']
['a', 'a', 'a']
['a', 'a', 'a', 'a']
Run Code Online (Sandbox Code Playgroud)
在每次迭代中,都会创建新的B对象.为什么它具有前一个的价值?
您正在修改类属性而不是实例属性.更改val
为实例属性:
class B(object):
def __init__(self):
self.val = []
Run Code Online (Sandbox Code Playgroud)