【问题标题】:performing set operations on custom classes in python在python中对自定义类执行集合操作
【发布时间】:2011-04-22 10:16:40
【问题描述】:

我想将 Python 的内置 set 类与我创建的自定义类一起使用。如果我想要 要创建包含自定义类实例的集合,我需要实现哪些函数才能执行测试,例如 set_a - set_b?

【问题讨论】:

标签: python set


【解决方案1】:

它可以开箱即用,但是,在某些情况下,重载 __eq____ne____hash__ 是有意义的。默认情况下,__eq__ 将比较对象身份。这可能不是你想要的。在这种情况下,您必须注意相等的对象具有相等的哈希值,并且理想情况下,不相等的对象具有不同的哈希值(尽管这不是必需的,它只是减少了冲突)。您应该始终使用__eq__ 实现__ne__,除非您有特定的理由不这样做(这样做是为了确保逻辑一致性)。

另外,当重载__hash__ 时,您必须注意当对象存储在set 中时哈希值不会改变。

【讨论】:

  • 谢谢,@Space_C0wb0y。关于 eqhash 的一点是我需要知道的。
  • @Danny:很高兴为您提供帮助。如果某个答案解决了您的问题,您可以使用左侧的勾号接受它。
  • 你没有说如何实现 hash 这是这里的关键部分。如何准确实施?其次,当您创建类时,您很少(我以前从未这样做过!)创建 eqne 函数。不需要!那为什么要另外写呢?
猜你喜欢
  • 2017-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-31
  • 1970-01-01
  • 2014-10-22
  • 1970-01-01
  • 2017-05-22
相关资源
最近更新 更多