使用点(.) 访问字典键

pyt*_*ker 5 python

我无法使用点(.)访问字典键,但是当我定义一个继承自 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)

fer*_*rdy 4

通过应用你的例子

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_keysecond_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)