没有子类字典,什么类需要被认为是映射,以便可以将其传递给带有**的方法
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。
一只甜甜圈
慕盖茨4494581
相关分类