Je génère des noms de classe de façon dynamique, puis je souhaite importer cette classe par son nom pour accéder à une méthode statique.Importer dynamiquement une classe par son nom pour un accès statique
C'est la classe à importer dans « the_module.py »:
class ToImport(object):
@classmethod
def initialize(cls, parameter):
print parameter
Selon un Blog post c'est pour autant que je suis:
theModule = __import__("the_module")
toImport = getattr(theModule, "ToImport")
toImport.initialize("parameter")
Mais l'exemple du blog semble être incomplet car il me donne un objet module sans la classe désirée ToImport
. Regarder le __import__()
documentation me montre qu'il y a plus d'attributs optionnels à la fonction. Je parvins avec
theModule = __import__("the_module", globals(), locals(), ["ToImport"])
Pourquoi dois-je donner l'attribut fromlist
? Est-ce que je ne peux pas importer tous les attributs de modules?
quelle version de py? –
Utiliser Python 2.6.2 – desolat