我无法使用点(.)访问字典键,但是当我定义一个继承自 dict 的类时,我可以使用点(.)访问它的键。有人能解释一下吗?
所以,当我运行这段代码时:
d = {'first_key':1, 'second_key':2}
d.first_key
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
'dict' object has no attribute 'first_key'
Run Code Online (Sandbox Code Playgroud)
但是当我运行这个时:
class DotDict(dict):
pass
d = DotDict()
d.first_key = 1
d.second_key = 2
print(d.first_key)
print(d.second_key)
Run Code Online (Sandbox Code Playgroud)
我明白了:
1
2
Run Code Online (Sandbox Code Playgroud)
通过应用你的例子
class DotDict(dict):
pass
d = DotDict()
d.first_key = 1
d.second_key = 2
print(d.first_key)
print(d.second_key)
Run Code Online (Sandbox Code Playgroud)
您可以将实例参数设置first_key为second_key您的DotDict类,但不要设置为字典本身。如果您将词典内容显示到屏幕上,您就可以看到这一点:
In [5]: d
Out[5]: {}
Run Code Online (Sandbox Code Playgroud)
所以,这只是一个空的字典。您可以通过常用方式访问字典:
In [1]: d={}
In [2]: d['first'] = 'foo'
In [3]: d['second'] = 'bar'
In [4]: d
Out[4]: {'first': 'foo', 'second': 'bar'}
Run Code Online (Sandbox Code Playgroud)