Могу ли я использовать динамическое сопоставление для распаковки аргументов ключевых слов в Python?
Короче говоря, я хочу назвать формат с произвольно названными аргументами, которые будут предварительно искать.
'{Thing1} and {other_thing}'.format(**my_mapping)
Я попытался реализовать my_mapping так:
class Mapping(object):
def __getitem__(self, key):
return 'Proxied: %s' % key
my_mapping = Mapping()
Который работает как ожидалось при звонкеmy_mapping['anything']
, Но при передаче в format (), как показано выше, я получаю:
TypeError: format() argument after ** must be a mapping, not Mapping
Я пробовал создавать подклассыdict
вместоobject
, но сейчас звонюformat()
как показано поднимаетKeyError
, Я даже реализовал__contains__
какreturn True
, но до сих порKeyError
.
Похоже, что**
это не просто звонок__getitem__
на объекте, переданном. Кто-нибудь знает, как обойти это?