擅长:python、mysql、java
<p>另一种使用getattr默认值的方法:</p>
<pre><code>set(x for x in getattr(obj, field, None) for field in ['field1', 'field2', 'field3'] if x)
</code></pre>
<p><strong>编辑:</strong></p>
<p>这里要向你展示这个功能背后的逻辑,以及为什么我认为它可能比其他一些解决方案更好(我可能错了,但是嘿,生活就是要从错误中学习)</p>
^{pr2}$
<p>如您所见,只有1个循环,并且对每个字段只调用一次<code>getattr()</code>。只有“真实”的值被添加到结果中。我认为这比获得所有结果,然后在以后删除“非真实”值更有效。但是如果我错了请纠正我。干杯。在</p>