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

2024-04-28 10:25:54 发布

您现在位置:Python中文网/ 问答频道 /正文


Tags: python
2条回答

然而,当重载^{}^{}^{}是有意义的时候,它可能是开箱即用的。默认情况下,__eq__将比较对象标识。这可能不是你想要的。在这种情况下,必须注意相等的对象具有相等的散列,并且,理想情况下,不相等的对象具有不同的散列(虽然这不是必需的,但它只是减少了冲突)。您应该始终使用__eq__实现__ne__,除非您有特殊的原因要这样做(这样做是为了确保逻辑一致性)。

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

如果要支持-操作,可以执行以下操作:

#!/usr/bin/python

class Test(object):
    def __init__(self, val):
        self.val = val
    def __sub__(self, y):
        return Test(self.val - y.val)

x = Test(10) - Test(5)
print x.val

在执行-操作时调用__sub__

相关问题 更多 >