我编写了以下python代码。
我希望每个循环都有一个新的tmp
个实例,因此每次打印tmp.c
时,我都应该"[1]"
。
为什么会这样?
class f():
c = []
def __init__(self):
self.c.append(1)
for i in range(5):
tmp = f()
print(tmp.c)
print(tmp)
输出结果为:
<__main__.f object at 0x7f7566b0b7f0>
[1, 1]
<__main__.f object at 0x7f7566b0b668>
[1, 1, 1]
<__main__.f object at 0x7f7566b0b828>
[1, 1, 1, 1]
<__main__.f object at 0x7f7566b0b668>
[1, 1, 1, 1, 1]
<__main__.f object at 0x7f7566b0b828>
答案 0 :(得分:0)
c是一个静态变量,它属于类和实例 你可以做id(c)并看到id总是一样的
你想做这样的事情
class f():
def __init__(self):
self.c = [1]
for i in range(5):
tmp = f()
print(tmp.c)
print(tmp)