在python中对自定义类执行set操作

Dan*_*ree 25 python set

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

Bjö*_*lex 32

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

此外,在重载时__hash__,您必须注意在对象存储在a中时散列不会更改set.

  • 您没有说如何实现 __hash__ 这是这里的关键部分。具体如何实施呢?其次,当您创建类时,您很少(直到现在我才这样做!)创建 __eq__ 或 __ne__ 函数。不需要!那么为什么要写别的呢? (3认同)