擅长:python、mysql、java
<p>您不能在裸名(例如<code>rawdict1</code>)上执行此操作,因为您无法截获对裸名的赋值,并使它们在某个时候“附加”执行,例如保存先前的值。对装饰过的<em>名字很容易做到,例如:</p>
<pre><code>undoable.rawdict1 = {1}
</code></pre>
<p>诸如此类,通过使<code>undoable</code>成为一个具有适当的<code>__setitem__</code>的类的实例,该实例将前一个值(如果有)附加到列表中,并在列表太长时弹出第0项。但这还不足以满足除赋值之外的其他“不可撤销”操作,比如<code>undoable.rawdict1.update(whatever)</code>——你确定不需要它吗?在</p>