Leyendo el archivo de configuración YAML en python y usando variables

Digamos que tengo un archivo de configuración yaml como:

test1: minVolt: -1 maxVolt: 1 test2: curr: 5 volt: 5 

Puedo leer el archivo en python usando:

 import yaml with open("config.yaml", "r") as f: config = yaml.load(f) 

Entonces puedo acceder a las variables con

 config['test1']['minVolt'] 

En cuanto al estilo, ¿cuál es la mejor manera de usar variables del archivo de configuración? Estaré usando las variables en múltiples módulos. Si simplemente accedo a las variables como se muestra arriba, si se cambia el nombre de algo, tendré que cambiar el nombre de cada instancia de la variable.

Solo me pregunto cuáles son las mejores prácticas comunes para usar variables de un archivo de configuración en diferentes módulos.

Puedes hacerlo:

 class Test1Class: def __init__(self, raw): self.minVolt = raw['minVolt'] self.maxVolt = raw['maxVolt'] class Test2Class: def __init__(self, raw): self.curr = raw['curr'] self.volt = raw['volt'] class Config: def __init__(self, raw): self.test1 = Test1Class(raw['test1']) self.test2 = Test2Class(raw['test2']) config = Config(yaml.safe_load(""" test1: minVolt: -1 maxVolt: 1 test2: curr: 5 volt: 5 """)) 

Y luego accede a tus valores con:

 config.test1.minVolt 

Cuando cambia el nombre de los valores en el archivo YAML, solo necesita cambiar las clases en un lugar.

Nota: PyYaml también le permite deserializar directamente YAML a clases personalizadas. Sin embargo, para que eso funcione, necesitarías agregar tags a tu archivo YAML para que PyYaml sepa a qué clases deserializarse. Espero que no quiera hacer que su entrada de YAML sea más compleja.