sor*_*rin 6 python yaml pyyaml
我有一个YAML配置,看起来像:
config:
- id: foo
- name: bar
content:
- run: xxx
- remove: yyy
Run Code Online (Sandbox Code Playgroud)
我正在使用Python YAML模块加载它,但我希望以更好的方式访问它,如:
stream = open(filename)
config = load(stream, Loader=Loader)
print(config['content'])
Run Code Online (Sandbox Code Playgroud)
我想要的是能够做到:print(config.content).
您可以使用以下类在字典中使用对象表示法,如本答案中所述:
class DictAsMember(dict):
def __getattr__(self, name):
value = self[name]
if isinstance(value, dict):
value = DictAsMember(value)
return value
Run Code Online (Sandbox Code Playgroud)
这个课程在行动:
>>> my_dict = DictAsMember(one=1, two=2)
>>> my_dict
{'two': 2, 'one': 1}
>>> my_dict.two
2
Run Code Online (Sandbox Code Playgroud)
编辑这与子词典递归地一起工作,例如:
>>> my_dict = DictAsMember(one=1, two=2, subdict=dict(three=3, four=4))
>>> my_dict.one
1
>>> my_dict.subdict
{'four': 4, 'three': 3}
>>> my_dict.subdict.four
4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4968 次 |
| 最近记录: |