带if的Python哈希

2024-07-03 08:18:23 发布

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

我有一个关于Python的hash(self)函数的问题。你知道吗

因此,在我的方法中,我有以下代码片段

def __init__(self, upper1, lower1, upper2, lower2):
    self.phase = 1
    self.gammas = frozenset()
    self.gammabars = frozenset()

def __hash__(self):
    if self.gammas:
        return hash(self.gammas)
    elif self.gammabars:
        return hash(self.gammabars)

所以我想说:

如果自我介绍.gammas不为空,则返回自我介绍.gammas或者自我。gammabars等等

但如果我现在开始我的程序,我会得到:

TypeError: __hash__ method should return an integer

你知道怎么解决吗?你知道吗


Tags: 方法函数代码selfreturninitdefhash
2条回答

使用元组方法的哈希:

return hash((self.gammas, self.gammabar))

调用hash(instance)时,您的self.gammasself.gammabars都不能是True。您可以尝试添加else案例:

def __hash__(self):
    if self.gammas:
        return hash(self.gammas)
    elif self.gammabars:
        return hash(self.gammabars)
    else:
        return hash(something)
        # or
        raise ValueError('gammas and gammabars are not valid.')

或者调试代码以确认self.gammasself.gammabars值。你知道吗

相关问题 更多 >