我尝试使用以下类来创建节点的“列表”,这些节点可以包含与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 value
为None
,空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
)???