Без подкласса 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 проверяет утверждения как подкласс, но не дает экземпляра (Дик).В идеале я даже не хочу использовать ABCMeta.