我有一个配置文件,并且想要创建一个Config类,该类具有配置文件中不同部分和值的属性。
例如,我有一个yaml文件(虽然json也可以),设置如下:
section1:
key1: value1
key2: value2
section2:
key1: value1
我希望能够通过调用类来检索属性,如下所示:Config.section1.key1
将来可能需要添加到此文件中,因此我希望能够使用yaml文件中的任何其他元素更新Config类。
我可以使用以下内容成功将节名称分配给实例化对象:
class Config(object):
def __init__(self):
with open("config.yml", 'r') as ymlfile:
cfg = yaml.load(ymlfile)
for section in cfg.items():
setattr(self, section[0], section[1])
这使得以下工作正常:
config = Config()
print(config.section1)
但我不能对Config类本身做同样的事情。
我也无法弄清楚如何存储嵌套属性。我试过这个:
for section in cfg.items():
setattr(self, section[0], section[1])
for key in section[1]:
setattr(section, key, section[1][key])
但它只是返回以下错误:
Traceback (most recent call last):
File "config_so.py", line 13, in <module>
config = Config()
File "config_so.py", line 12, in __init__
setattr(section, key, section[1][key])
AttributeError: 'tuple' object has no attribute 'server'