Obtener atributos de un paquete de Python que no tengo el nombre, hasta el tiempo de ejecución
Pregunta
En un paquete de Python, tengo una cadena que contiene (presumiblemente) el nombre de un subpaquete. De ese subpaquete, quiero recuperar una tupla de constantes ... Sin embargo, ni siquiera estoy seguro de cómo proceder para hacerlo.
#!/usr/bin/python
"" The Alpha Package
Implements functionality of a base package under the 'alpha' namespace
""
def get_params(packagename):
# Here, I want to get alpha.<packagename>.REQUIRED_PARAMS
pass
Entonces, más adelante en mi código podría tener:
#!/usr/bin/python
import alpha
alpha.get_params('bravo') # should return alpha.bravo.REQUIRED_PARAMS
alpha.get_params('charlie') # should return alpha.charlie.REQUIRED_PARAMS
Solución
Si entiendo correctamente lo que quieres, creo que algo como esto debería funcionar:
def get_params(packagename):
module = __import__('alpha.%s' % packagename)
return module.__dict__['REQUIRED_PARAMS']
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow