Ottenere gli attributi di un pacchetto Python di cui non ho il nome, fino al runtime

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

  •  19-08-2019
  •  | 
  •  

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
È stato utile?

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