Короче говоря, я хочу вызвать формат с произвольно названными аргументами, который будет выполнять поиск.
'{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 ['что угодно']
. Но при передаче в format (), как показано выше, я получаю:
TypeError: format() argument after ** must be a mapping, not Mapping
Я попытался создать подкласс dict
вместо объекта
, но теперь вызвал format ()
, как показано вызывает KeyError
. Я даже реализовал __ contains __
как return True
, но все же KeyError
.
Похоже, что **
не просто вызывает __ getitem __
для переданного объекта. Кто-нибудь знает, как это обойти?