gpt4 book ai didi

python - 我怎样才能从字典中调用 __missing__

转载 作者:太空宇宙 更新时间:2023-11-03 13:14:19 25 4
gpt4 key购买 nike

我想从 dict 派生并覆盖丢失的方法。我想做一些事情然后仍然调用它的 super 函数。像这样:

class Foo(dict):
def __missing__(self, key):
print('missing {}'.format(key))
return super().__missing__(key)

但是会产生:

AttributeError: 'super' object has no attribute '__missing__'

当然我仍然可以使用:

raise KeyError(key)

但我更愿意调用 super 函数。因为代码可以(或者可能在未来的 python 版本中)在 super().__missing__ 中执行,而不是引发 KeyError。

最佳答案

没有dict.__missing__;只需放弃对 super().__missing__ 的调用(并引发 KeyError)。该方法是可选的并且没有默认实现。

或者,如果你想正确地支持多重继承,你可以捕获 AttributeError 异常:

class Foo(dict):
def __missing__(self, key):
print('missing {}'.format(key))
try:
return super().__missing__(key)
except AttributeError:
raise KeyError(key)

关于python - 我怎样才能从字典中调用 __missing__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34884402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com