Obtener atributos de un paquete de Python que no tengo el nombre, hasta el tiempo de ejecución

StackOverflow https://stackoverflow.com/questions/474331

  •  19-08-2019
  •  | 
  •  

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
¿Fue útil?

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
scroll top