无法获得新实例

时间:2017-01-06 13:15:54

标签: python

我编写了以下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>

1 个答案:

答案 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)