充当**拆包映射的类
发布于 2021-01-29 15:23:39
如果没有子类dict的子类,则需要将什么类视为映射,以便可以使用将该类传递给方法**
。
from abc import ABCMeta
class uobj:
__metaclass__ = ABCMeta
uobj.register(dict)
def f(**k): return k
o = uobj()
f(**o)
# outputs: f() argument after ** must be a mapping, not uobj
至少到了抛出映射功能缺失的错误的地步,所以我可以开始实现。
我回顾了模拟容器类型,但是简单地定义魔术方法无效,并且使用ABCMeta
它覆盖并注册为dict可以将断言验证为子类,但是会失败isinstance(o,
dict)
。理想情况下,我什至不想使用ABCMeta
。
关注者
0
被浏览
43
1 个回答