擅长:python、mysql、java
<p>显然,您可以将类别实例放入dict中,因此必须已经覆盖了<code>__hash__</code>。现在你只需要<code>__eq__</code>:</p>
<pre><code>class Category(object):
# you must have overwritten `__hash__` like this already
def __hash__(self):
return hash((self.attr1, self.attr2, ... ))
# now you just need tis
def __eq__(self, other):
return isinstance(other, Category) and \
(self.attr1, self.attr2, ... ) == (other.attr1, other.attr2, ... )
</code></pre>
<p>真正应该做的是扔掉整个类并使用<code>collections.namedtuple</code>来代替:</p>
<pre><code>Category = collections.namedtuple('Category', 'attr1 attr2 attr3')
</code></pre>