擅长:python、mysql、java
<p>没有什么是真正自动的。您需要有一个手动运行的函数来检查死的<code>Snit</code>,或者有一个属于<code>Snot</code>的函数,当{<cd2>}发生任何有趣的事情时,都会调用该函数来检查并删除死的<code>Snit</code></p>
<p>例如:</p>
<pre><code>class Snot:
...
def __repr__(self):
# check for and remove any dead Snits
self._remove_dead_snits()
return ...
def _remove_dead_snits(self):
if self.s1() is None:
self.s1 = None
... # and so on and so forth
</code></pre>
<p>有趣的部分是添加对<code>_remove_dead_snits</code>的调用,以便与<code>__getitem__</code>、<code>__iter__</code>等<code>_remove_dead_snits</code>的每个有趣的交互,以及您可以对它做的任何其他操作。在</p>
<hr/>
<p>实际上,仔细考虑一下,如果每个<code>Snot</code>只有四个可能的<code>Snit</code>,那么可以使用一个<code>SnitRef</code>描述符,下面是对原始代码的一些更改:</p>
^{pr2}$
<p>跑步时:</p>
<pre><code>[Snit(0), Snit(1), Snit(2), Snit(3)]
Snit(2)
[Snit(0), Snit(1), Snit(3)]
None
</code></pre>