¿Puedo usar una asignación dinámica para desempaquetar argumentos de palabras clave en Python?
n pocas palabras, quiero llamar al formato con argumentos nombrados arbitrariamente, que formarán una búsqueda.
'{Thing1} and {other_thing}'.format(**my_mapping)
He intentado implementar my_mapping así:
class Mapping(object):
def __getitem__(self, key):
return 'Proxied: %s' % key
my_mapping = Mapping()
Que funciona como se esperaba al llamar amy_mapping['anything']
. Pero cuando se pasa al formato () como se muestra arriba, obtengo:
TypeError: format() argument after ** must be a mapping, not Mapping
Intenté subclasificardict
en lugar deobject
, pero ahora llamando aformat()
como se muestra planteaKeyError
. Incluso implementé__contains__
comoreturn True
, pero aúnKeyError
.
Así que parece que**
no solo llama a__getitem__
en el objeto pasado. ¿Alguien sabe cómo solucionar esto?