Posso usar um mapeamento dinâmico para descompactar argumentos de palavra-chave em Pytho
ara encurtar a história, quero chamar o formato com argumentos nomeados arbitrariamente, que farão uma pesquisa prévi
'{Thing1} and {other_thing}'.format(**my_mapping)
Eu tentei implementar o my_mapping assim:
class Mapping(object):
def __getitem__(self, key):
return 'Proxied: %s' % key
my_mapping = Mapping()
O que funciona como esperado ao chamarmy_mapping['anything']
. Mas quando passado para format () como mostrado acima, recebo:
TypeError: format() argument after ** must be a mapping, not Mapping
Eu tentei subclassificardict
ao invés deobject
, mas agora chamandoformat()
como mostrado aumentaKeyError
. Eu até implementei__contains__
Comoreturn True
, mas aindaKeyError
.
Então parece que**
não está apenas chamando__getitem__
no objeto passado. Alguém sabe como contornar isso?