J'aimerais savoir comment puis-je instancier dynamiquement des
objets en utilisant seulement une chaine de caractéres (nom de
l'objet et du fichier .py).
Le nom du fichier est le même que celui de l'objet donc dans un
premier temps je dois importer le module et ensuite instancier
l'objet dans le module. Tout ce dont je dispose est la chaine de
caractéres du nom de l'objet et du fichier. Cependant, j'aimerais
aussi instancier l'objet dynamiquement en appelant sa méthode
"__init__".
J'ai essayé plusieurs choses mais aucune ne m'as vraiment satisfait
car je n'avais qu'une partie de la solution.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Amaury Forgeot d'Arc
Bonjour,
Bonjour,
J'aimerais savoir comment puis-je instancier dynamiquement des objets en utilisant seulement une chaine de caractéres (nom de l'objet et du fichier .py).
Le nom du fichier est le même que celui de l'objet donc dans un premier temps je dois importer le module et ensuite instancier l'objet dans le module. Tout ce dont je dispose est la chaine de caractéres du nom de l'objet et du fichier. Cependant, j'aimerais aussi instancier l'objet dynamiquement en appelant sa méthode "__init__".
J'ai essayé plusieurs choses mais aucune ne m'as vraiment satisfait car je n'avais qu'une partie de la solution.
Pour instancier un objet (à partir de sa classe), il suffit de l'appeler comme une fonction! Un peu comme l'opérateur 'new' du Java ou C++.
Si j'ai bien compris, il te faut du code qui ressemble à ceci:
nomDuModule = "module" # le nom du .py nomDeLaClasse = "module" # ici, c'est le même nom
# Importe le module module = __import__(nomDuModule) # Trouve la classe dans le module classe = getattr(module, nomDeLaClasse) # instancie l'objet et appelle son __init__ objet = classe()
En python, un module et une classe sont aussi des objets que l'on peut mettre dans des variables. Et c'est pour cela qu'on l'aime.
-- Amaury Forgeot d'Arc
Bonjour,
Bonjour,
J'aimerais savoir comment puis-je instancier dynamiquement des
objets en utilisant seulement une chaine de caractéres (nom de
l'objet et du fichier .py).
Le nom du fichier est le même que celui de l'objet donc dans un
premier temps je dois importer le module et ensuite instancier
l'objet dans le module. Tout ce dont je dispose est la chaine de
caractéres du nom de l'objet et du fichier. Cependant, j'aimerais
aussi instancier l'objet dynamiquement en appelant sa méthode
"__init__".
J'ai essayé plusieurs choses mais aucune ne m'as vraiment satisfait
car je n'avais qu'une partie de la solution.
Pour instancier un objet (à partir de sa classe), il suffit de l'appeler
comme une fonction! Un peu comme l'opérateur 'new' du Java ou C++.
Si j'ai bien compris, il te faut du code qui ressemble à ceci:
nomDuModule = "module" # le nom du .py
nomDeLaClasse = "module" # ici, c'est le même nom
# Importe le module
module = __import__(nomDuModule)
# Trouve la classe dans le module
classe = getattr(module, nomDeLaClasse)
# instancie l'objet et appelle son __init__
objet = classe()
En python, un module et une classe sont aussi des objets que l'on peut
mettre dans des variables. Et c'est pour cela qu'on l'aime.
J'aimerais savoir comment puis-je instancier dynamiquement des objets en utilisant seulement une chaine de caractéres (nom de l'objet et du fichier .py).
Le nom du fichier est le même que celui de l'objet donc dans un premier temps je dois importer le module et ensuite instancier l'objet dans le module. Tout ce dont je dispose est la chaine de caractéres du nom de l'objet et du fichier. Cependant, j'aimerais aussi instancier l'objet dynamiquement en appelant sa méthode "__init__".
J'ai essayé plusieurs choses mais aucune ne m'as vraiment satisfait car je n'avais qu'une partie de la solution.
Pour instancier un objet (à partir de sa classe), il suffit de l'appeler comme une fonction! Un peu comme l'opérateur 'new' du Java ou C++.
Si j'ai bien compris, il te faut du code qui ressemble à ceci:
nomDuModule = "module" # le nom du .py nomDeLaClasse = "module" # ici, c'est le même nom
# Importe le module module = __import__(nomDuModule) # Trouve la classe dans le module classe = getattr(module, nomDeLaClasse) # instancie l'objet et appelle son __init__ objet = classe()
En python, un module et une classe sont aussi des objets que l'on peut mettre dans des variables. Et c'est pour cela qu'on l'aime.
-- Amaury Forgeot d'Arc
janemba
On Tue, 20 Feb 2007 22:58:43 +0100, Amaury Forgeot d'Arc wrote:
Bonjour,
Bonjour,
J'aimerais savoir comment puis-je instancier dynamiquement des objets en utilisant seulement une chaine de caractéres (nom de l'objet et du fichier .py).
Le nom du fichier est le même que celui de l'objet donc dans un premier temps je dois importer le module et ensuite instancier l'objet dans le module. Tout ce dont je dispose est la chaine de caractéres du nom de l'objet et du fichier. Cependant, j'aimerais aussi instancier l'objet dynamiquement en appelant sa méthode "__init__".
J'ai essayé plusieurs choses mais aucune ne m'as vraiment satisfait car je n'avais qu'une partie de la solution.
Pour instancier un objet (à partir de sa classe), il suffit de l'appeler comme une fonction! Un peu comme l'opérateur 'new' du Java ou C++.
Si j'ai bien compris, il te faut du code qui ressemble à ceci:
nomDuModule = "module" # le nom du .py nomDeLaClasse = "module" # ici, c'est le même nom
# Importe le module module = __import__(nomDuModule) # Trouve la classe dans le module classe = getattr(module, nomDeLaClasse) # instancie l'objet et appelle son __init__ objet = classe()
En python, un module et une classe sont aussi des objets que l'on peut mettre dans des variables. Et c'est pour cela qu'on l'aime.
Merci beaucoup, effectivement ça fait du bien ;)
On Tue, 20 Feb 2007 22:58:43 +0100, Amaury Forgeot d'Arc wrote:
Bonjour,
Bonjour,
J'aimerais savoir comment puis-je instancier dynamiquement des
objets en utilisant seulement une chaine de caractéres (nom de
l'objet et du fichier .py).
Le nom du fichier est le même que celui de l'objet donc dans un
premier temps je dois importer le module et ensuite instancier
l'objet dans le module. Tout ce dont je dispose est la chaine de
caractéres du nom de l'objet et du fichier. Cependant, j'aimerais
aussi instancier l'objet dynamiquement en appelant sa méthode
"__init__".
J'ai essayé plusieurs choses mais aucune ne m'as vraiment satisfait
car je n'avais qu'une partie de la solution.
Pour instancier un objet (à partir de sa classe), il suffit de l'appeler
comme une fonction! Un peu comme l'opérateur 'new' du Java ou C++.
Si j'ai bien compris, il te faut du code qui ressemble à ceci:
nomDuModule = "module" # le nom du .py
nomDeLaClasse = "module" # ici, c'est le même nom
# Importe le module
module = __import__(nomDuModule)
# Trouve la classe dans le module
classe = getattr(module, nomDeLaClasse)
# instancie l'objet et appelle son __init__
objet = classe()
En python, un module et une classe sont aussi des objets que l'on peut
mettre dans des variables. Et c'est pour cela qu'on l'aime.
On Tue, 20 Feb 2007 22:58:43 +0100, Amaury Forgeot d'Arc wrote:
Bonjour,
Bonjour,
J'aimerais savoir comment puis-je instancier dynamiquement des objets en utilisant seulement une chaine de caractéres (nom de l'objet et du fichier .py).
Le nom du fichier est le même que celui de l'objet donc dans un premier temps je dois importer le module et ensuite instancier l'objet dans le module. Tout ce dont je dispose est la chaine de caractéres du nom de l'objet et du fichier. Cependant, j'aimerais aussi instancier l'objet dynamiquement en appelant sa méthode "__init__".
J'ai essayé plusieurs choses mais aucune ne m'as vraiment satisfait car je n'avais qu'une partie de la solution.
Pour instancier un objet (à partir de sa classe), il suffit de l'appeler comme une fonction! Un peu comme l'opérateur 'new' du Java ou C++.
Si j'ai bien compris, il te faut du code qui ressemble à ceci:
nomDuModule = "module" # le nom du .py nomDeLaClasse = "module" # ici, c'est le même nom
# Importe le module module = __import__(nomDuModule) # Trouve la classe dans le module classe = getattr(module, nomDeLaClasse) # instancie l'objet et appelle son __init__ objet = classe()
En python, un module et une classe sont aussi des objets que l'on peut mettre dans des variables. Et c'est pour cela qu'on l'aime.