Python不会测试 可变 对象,而是测试可 哈希 对象。
自定义类实例默认情况下是可哈希的。很好,因为
__eq__此类的默认实现仅测试实例 身份 ,并且哈希基于相同的信息。
换句话说,更改实例属性的状态并不重要,因为实例的 身份 始终是不可变的。
一旦实现了将实例状态考虑在内的
__hash__and
__eq__方法,您可能会遇到麻烦,应该停止对该状态进行更改。只有这样,自定义类实例才不再适合存储在字典或集合中。

Python不会测试 可变 对象,而是测试可 哈希 对象。
自定义类实例默认情况下是可哈希的。很好,因为
__eq__此类的默认实现仅测试实例 身份 ,并且哈希基于相同的信息。
换句话说,更改实例属性的状态并不重要,因为实例的 身份 始终是不可变的。
一旦实现了将实例状态考虑在内的
__hash__and
__eq__方法,您可能会遇到麻烦,应该停止对该状态进行更改。只有这样,自定义类实例才不再适合存储在字典或集合中。