Ottenere gli attributi di un pacchetto Python di cui non ho il nome, fino al runtime
Domanda
In un pacchetto Python, ho una stringa contenente (presumibilmente) il nome di un pacchetto secondario. Da quel subpackage, voglio recuperare una tupla di costanti ... Non sono nemmeno sicuro di come procedere in questo, però.
#!/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
Quindi, più avanti nel mio codice potrei avere:
#!/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
Soluzione
Se capisco correttamente quello che vuoi, penso che qualcosa di grosso come questo dovrebbe funzionare:
def get_params(packagename):
module = __import__('alpha.%s' % packagename)
return module.__dict__['REQUIRED_PARAMS']
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow