擅长:python、mysql、java
<p>这是从aspect ku mkn8rd'的回答中发展而来的,考虑到了Gerrat的评论,但它太长了,无法作出真正的评论。在</p>
<p>你需要2个特殊的容器类来模拟一个列表和一个字典。在这两种方法中,都可以添加指向顶级对象的指针并重写以下方法:</p>
<ul>
<li><code>__setitem__(self, key, value)</code></li>
<li><code>__delitem__(self, key)</code></li>
<li><code>__reversed__(self)</code></li>
</ul>
<p>所有这些方法都是在修改中调用的,并且应该具有要写入磁盘的顶级对象。在</p>
<p>另外,<code>__setitem__(self, key, value)</code>应该检查value是否是一个列表并将其包装到一个特殊的list对象中,或者如果它是一个字典,则将其包装到一个特殊的dictionary对象中。在这两种情况下,方法都应该将顶级对象设置到新容器中。如果它们和对象都没有定义<code>__setitem__</code>,它应该引发一个异常,说明该对象不受支持。当然,您应该修改方法以考虑这个新类。在</p>
<p>当然,有大量的代码需要编写和测试,但它应该是有效的-留给读者作为练习:-)</p>