我想将 Python 的内置 set 类与我创建的自定义类一起使用。如果我愿意
要创建包含自定义类实例的集合,我需要实现哪些函数才能执行测试,例如 set_a - set_b?
它可以开箱即用,但是,在某些情况下,过载是有意义的__eq__ https://docs.python.org/3.4/reference/datamodel.html#object.__eq__, __ne__ https://docs.python.org/3.4/reference/datamodel.html#object.__ne__ and __hash__ https://docs.python.org/3.4/reference/datamodel.html#object.__hash__。默认情况下,__eq__
将比较对象身份。这可能不是您想要的。在这种情况下,您必须注意相等的对象具有相等的哈希值,并且理想情况下,不相等的对象具有不同的哈希值(尽管这不是必需的,它只是减少冲突)。你应该始终实施__ne__
using __eq__
,除非您有特定原因要这样做(这样做是为了确保逻辑一致性)。
另外,超载时__hash__
,您必须注意当对象存储在 a 中时散列不会改变set
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)