класс python, который действует как сопоставление для ** распаковки

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

57
задан dskinner 21 December 2011 в 21:39
поделиться