擅长:python、mysql、java
<p><code>field1 == field2</code>使用<code>==</code>运算符执行逐项比较(通过调用<code>__eq__</code>)。你知道吗</p>
<p><code>set(field1) == set(field2)</code>检查是否所有元素都在这两个集合中。集合中的元素由它们的散列来标识。你可以根据名字计算哈希值。列表中的某些元素具有不同的名称,因此它们是不同的集合元素。你知道吗</p>
<pre><code>print(field1[1].name) # 'Field 2'
print(field2[1].name) # 'Field 21'
</code></pre>
<p>总之,列表比较基于<code>__eq__</code>,而集合比较基于<code>__hash__</code>。它们基于<code>Field</code>类中完全不同的计算,因此得到不同的结果。你知道吗</p>