【问题标题】:performing set operations on custom classes in python在python中对自定义类执行集合操作 【发布时间】:2011-04-22 10:16:40 【问题描述】: 我想将 Python 的内置 set 类与我创建的自定义类一起使用。如果我想要 要创建包含自定义类实例的集合,我需要实现哪些函数才能执行测试,例如 set_a - set_b? 【问题讨论】: 也在这里:stackoverflow.com/questions/17493307/… 标签: python set 【解决方案1】: 它可以开箱即用,但是,在某些情况下,重载 __eq__、__ne__ 和 __hash__ 是有意义的。默认情况下,__eq__ 将比较对象身份。这可能不是你想要的。在这种情况下,您必须注意相等的对象具有相等的哈希值,并且理想情况下,不相等的对象具有不同的哈希值(尽管这不是必需的,它只是减少了冲突)。您应该始终使用__eq__ 实现__ne__,除非您有特定的理由不这样做(这样做是为了确保逻辑一致性)。 另外,当重载__hash__ 时,您必须注意当对象存储在set 中时哈希值不会改变。 【讨论】: 谢谢,@Space_C0wb0y。关于 eq 和 hash 的一点是我需要知道的。 @Danny:很高兴为您提供帮助。如果某个答案解决了您的问题,您可以使用左侧的勾号接受它。 你没有说如何实现 hash 这是这里的关键部分。如何准确实施?其次,当您创建类时,您很少(我以前从未这样做过!)创建 eq 或 ne 函数。不需要!那为什么要另外写呢?