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