擅长:python、mysql、java
<p>我认为这显示了你存储数据的模型有问题。您可能希望使用像集合这样的数据结构,而不仅仅是属性。在</p>
<p>例如:</p>
<pre><code>items = {"milk", "yogurt", "bread", "umbrella"}
stored = set()
</code></pre>
<p>然后只需将所需的存储在<code>stored</code>集中。集合对于成员身份检查有非常快的性能,因此要进行检查,可以简单地执行<code>"milk" in stored</code>。在</p>
<p>如果您真的想保留现有的接口,可以使用<code>__getattr__()</code>来覆盖请求属性时的操作:</p>
^{pr2}$
<p>这将使<code>False</code>返回到冰箱中没有的任何东西,如果您需要它只对可能的项目做出响应,这很容易做到:</p>
<pre><code>def ___getattr__(self, item):
if item not in self.items:
raise AttributeError
return item in self.stored
</code></pre>
<p>当然,也可以设置:</p>
<pre><code>def __setattr__(self, item, value):
if item in self.items:
if value:
self.stored.add(item)
else:
self.stored.remove(item)
else:
...
</code></pre>
<p>另一种选择是对<code>True</code>/<code>False</code>的一种说法——我不能说我认为两者都是特别好的,一种可能更适合你的项目。只要用最适合你的。在</p>