我遇到了一个' class'在了解str.format_map()
时
(Python String format_map())
class Coordinate(dict):
def __missing__(self, key):
return key
尝试参数:
In [25]: Coordinate(x='6')
Out[25]: {'x': '6'}
In [26]: Coordinate(x='6', y='7')
Out[26]: {'x': '6', 'y': '7'}
难以理解的是,x=6
既不是dict
也不是{'x': '6'}
。
在官方文档中,它指定:
object.__missing__(self, key)
当密钥不在字典中时,由dict.__getitem__()
调用以实现dict子类的self[key]
。
它比之前的示例代码更难。 这里也有很好的答案。
最后一个答案获得了258个upvotes,这让我非常沮丧,因为我对此一无所知。 可以通过python的基本知识来理解吗?
答案 0 :(得分:1)
此处与>>> Coordinate(x='6')
{'x': '6'}
>>> dict(x='6')
{'x': '6'}
无关:
__init__
这只是调用dict初始值设定项,因为你继承了dict并且你不能覆盖__missing__
。
定义>>> c = Coordinate(x='6')
>>> c['new_key']
'new_key' # returns the key, instead of raising KeyError
>>> c # note: does not set it in the dict
{'x': '6'}
的效果如下所示:
{{1}}