У меня есть файл конфигурации yaml (configuration.yaml
).
Который я загружаю, используя:
import yaml
configuration = load_configurations()
def load_configurations(path_configuration = "../input/configuration.yaml"):
with open(path_configuration, "r") as stream:
try:
return(yaml.safe_load(stream))
except yaml.YAMLError as exc:
print(exc)
Внутри configuration
У меня следующая структура:
parameters:
pmt1:
value: 1.0
description: some text
pmt2:
value: 0.03
description: some other text
pmt3:
value: 0.033
description: more text
...
...
pmtN:
value: 0.04
description: yet more text
Теперь, Я хотел бы импортировать эти параметры как объекты в класс, значение которого равно value
, взятому из файла конфигурации.
Я прочитал YAML документация и следующие ранее заданные вопросы:
Преобразовать вложенный Python dict в объект?
Преобразование словаря в объект с ключами в качестве имени объекта в Python
Но я не смог решить свою проблему.
До сих пор мне удавалось сделать:
class MyClass:
def __init__(self, configuration):
self.set_parameters(configuration)
def set_parameters(self, configuration):
self.__dict__ = configuration["parameters"]
Что работает, но позволяет мне вызывать только что-то вроде:
In[]: MyClass.pmt1
Out[]:
{'value': 1,
'description': 'some text'}
Что я хотел бы получить:
In[]: MyClass.pmt1
Out[]: 1
Я тоже пробовал для перебора элементов словаря for item in configuration['parameters'].items():
, но это возвращает кортеж в форме:
('pmt1', {'value': 1.0, 'description': 'some text'})
, но я не уверен, как продолжить отсюда.