擅长:python、mysql、java
<p>好的,你有一个<code>Snot</code>,变量是<code>Snit</code>s</p>
<pre><code>class Snot(object):
def __init__(self, *snits):
self.snits = [weakref.ref(s) for s in snits]
def __eq__(self, other):
if not isinstance(other, self.__class__) and other is not None:
return NotImplemented
# are all my snits still valid
valid = all(s() for s in self.snits)
if other is None:
return not valid # if valid is True, we are not equal to None
else:
# whatever it takes to see if this snot is the same as the other snot
</code></pre>
<p>实际上,让类实例消失将需要更多的工作(例如让<code>dict</code>在类上跟踪它们,然后其他数据结构将只使用弱引用,但这可能会很快变得难看),所以下一个最好的方法是当它的任何一个<code>Snit</code>消失时,它就等于<code>None</code>。在</p>
<hr/>
<p>我知道<code>snits</code>和{<cd7>}都是<code>list</code>,顺序重要吗?如果顺序不重要,可以使用<code>set</code>s,这样就有可能有一个性能解决方案,其中死的{<cd10>}实际上从数据结构中删除了,但这会增加复杂性:每个<code>Snot</code>必须跟踪它所在的数据结构,并且每个<code>Snit</code>必须保留一个列表,其中<code>Snot</code>它在里面,而魔法必须生活在{<cd14>}中,这可能会导致其他问题。。。在</p>