<p><strong>不允许以更改哈希值的方式修改集合的成员。</strong></p>
<p>在Python中,只能在一个集合中存储<em>可哈希</em>对象。从<a href="http://docs.python.org/2/glossary.html#term-hashable" rel="nofollow">documentation</a>(我的重点):</p>
<blockquote>
<p>An object is hashable if <strong>it has a hash value which never changes during its lifetime</strong> (it needs a <code>__hash__()</code> method), and can be compared to other objects (it needs an <code>__eq__()</code> or <code>__cmp__()</code> method). <strong>Hashable objects which compare equal must have the same hash value.</strong></p>
<p>Hashability makes an object usable as a dictionary key and a set member, because these data structures use the hash value internally.</p>
<p>All of Python’s immutable built-in objects are hashable, while no mutable containers (such as lists or dictionaries) are. Objects which are instances of user-defined classes are hashable by default; they all compare unequal (except with themselves), and their hash value is their <code>id()</code>.</p>
</blockquote>
<p>如果你违反了这个合同(正如你在你的问题中所建议的那样),电视机就不能工作了,所有的赌注都输掉了。你知道吗</p>
<p>修改集合成员的正确方法是删除、更改和重新添加。这将像你期望的那样。你知道吗</p>
<blockquote>
<p>[the set] will determine whether objects are 'equal' by equating their hashes</p>
</blockquote>
<p>这不太正确。比较哈希值不能用来确定对象是否相等。它只能用于确定对象<em>不相等</em>。这是一个微妙但重要的区别。你知道吗</p>