Без подкласса 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.