如果不对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验证断言为子类,但是失败isinstation(o,dict)。理想情况下,我甚至不想使用ABCMeta。
相似问题