为什么嵌套的dict在创建时已有数据?

时间:2017-08-17 06:49:57

标签: python class dictionary

我尝试使用字典创建树。这是我的代码:

class Class1():
    a=0
    d={}
    d.clear()

    class Class2():
        b=0
        def __init__(self,data):
            b=data

    def __init__(self,data):
        a=data
        for j in range(3):
            self.d[j]=self.Class2(j)
            print(j)
            print(self.d.keys())

dict1={}
for i in range(4):
    dict1[i]=Class1(i)

我得到的是:

0
dict_keys([0])
1
dict_keys([0, 1])
2
dict_keys([0, 1, 2])
0
dict_keys([0, 1, 2])
1
dict_keys([0, 1, 2])
2
dict_keys([0, 1, 2])
0
dict_keys([0, 1, 2])
1
dict_keys([0, 1, 2])
2
dict_keys([0, 1, 2])
0
dict_keys([0, 1, 2])
1
dict_keys([0, 1, 2])
2
dict_keys([0, 1, 2])

我期望在每个父dict中有一个全新的空子dict,但是从第二个循环开始,dict在创建时已经有了数据。我检查了对象id,第二个" Class1"对象的词典只是第一个,第三个和第四个。

这只发生在dict对象上,其他对象如string或int不受影响。

有谁知道为什么会这样?感谢。

我的Python是3.6.2

0 个答案:

没有答案