与python`dict`的嵌套结构看起来像“包括自我”

时间:2017-08-20 23:58:45

标签: python python-3.x dictionary

我尝试使用以下类来创建节点的“列表”,这些节点可以包含与dict项目类型相同的嵌套节点:

$ ipython
Python 3.5.3 (default, Aug 19 2017, 03:39:05) 
Type 'copyright', 'credits' or 'license' for more information
IPython 6.1.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: class value_dict_pair():
...: 
...:     def __init__(self, value=None, data={}):
...:         self.data = data
...:         self.value = value
...: 

制作默认初始化实例:w valueNone,空dict位于data

In [2]: p=value_dict_pair()

In [3]: p.data
Out[3]: {}

好的,它真的很空。要将value_dict_pair类的另一个默认初始化实例添加到第一个“节点”的some键:

In [4]: p.data['some']=value_dict_pair()

In [5]: p.data
Out[5]: {'some': <__main__.value_dict_pair at 0x7f5c030b2c18>}

In [6]: p.data['some']
Out[6]: <__main__.value_dict_pair at 0x7f5c030b2c18>

好的,现在p.data只有some实例初始化的value_dict_pair密钥。但是,

In [7]: p.data['some'].data
Out[7]: {'some': <__main__.value_dict_pair at 0x7f5c030b2c18>}

为什么“嵌套”实例也有some键?? (是的,查看同一个实例的0x7f5c030b2c18地址

In [8]: p.data['some'].data['some']
Out[8]: <__main__.value_dict_pair at 0x7f5c030b2c18>

In [9]: p.data['some'].data['some'].data
Out[9]: {'some': <__main__.value_dict_pair at 0x7f5c030b2c18>}

In [10]: p.data['some'].data['some'].data['some']
Out[10]: <__main__.value_dict_pair at 0x7f5c030b2c18>

......等等。

我没有得到的是如何添加另一个(假设的)默认初始化value_dict_pair实例可能导致(循环引用dict)???

0 个答案:

没有答案