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