加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 如何从dict调用__missing__

发布时间:2020-12-20 11:48:31 所属栏目:Python 来源:网络整理
导读:我想从dict派生并覆盖缺少的方法.我想做一些东西然后仍然调用它的超级功能.像这样的东西: class Foo(dict): def __missing__(self,key): print('missing {}'.format(key)) return super().__missing__(key) 然而,这产生: AttributeError: 'super' object h
我想从dict派生并覆盖缺少的方法.我想做一些东西然后仍然调用它的超级功能.像这样的东西:

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)

但我更愿意称之为超级功能.因为除了引发KeyError之外,代码可以(或者可能在将来的python版本中)在super().__ 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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读