长话短说,我想用任意命名的参数调用格式,这将执行查找。
'{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()
raises KeyError
。我什至实施__contains__
为return True
,但仍然KeyError
。
所以看起来这**
不仅仅是调用__getitem__
传入的对象。有谁知道如何解决这个问题?