Sans sous-classement dict, ce qui serait une classe doit être considérée comme une cartographie de sorte qu'il peut être transmis à une méthode **
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
Au moins jusqu'au moment où il jette les erreurs de manque des fonctionnalités de cartographie, afin que je puisse commencer à mettre en œuvre.
J'ai passé en revue l'émulation types de conteneurs, mais il suffit de définir les méthodes magiques n'a aucun effet, et à l'aide de ABCMeta de modifier et l'enregistrer comme dict valide les assertions sous-classe, mais ne parvient pas isinstance(o, dict). Idéalement, je n'ai pas même envie d'utiliser ABCMeta.