J'apprends Python, et comme toujours, je suis ambitieux avec mes projets de démarrage. Je travaille sur un système de plugin pour un toolkit de site communautaire pour App Engine. Mon superclasse plugin a une méthode appelée install_path
. Je voudrais obtenir le __path__
pour le __module__
pour self
(qui dans ce cas sera la sous-classe). Le problème est, __module__
renvoie un str
plutôt que l'instance de module elle-même. eval()
est peu fiable et indésirable, donc j'ai besoin d'un bon moyen de mettre la main sur l'instance réelle du module qui n'implique pas eval
ling the str
Je reviens de __module__
.Comment obtenir l'instance de module pour une classe en Python?
10
A
Répondre
11
Le sys.modules
dict contient tous les modules importés, de sorte que vous pouvez utiliser:
mod = sys.modules[__module__]
1
Que diriez-vous Importing modules
X = __import__(‘X’)
fonctionne commeimport X
, avec la différence que vous 1) passer le nom du module sous forme de chaîne, et 2) attribuer explicitement à une variable dans votre espace de noms actuel.
Vous pouvez passer le nom du module (au lieu de 'X') et récupérer l'instance du module. Python veillera à ne pas importer deux fois le même module. Vous devriez donc récupérer l'instance que vous avez importée précédemment.
1
Vous pouvez également utiliser si vous voulez le module global de __file__
variable est le chemin du module.
Questions connexes
- 1. Utilisation de sphinx pour auto-documenter une classe python, module
- 2. Classe Python et attributs de module
- 3. comment puis-je obtenir le module uuid pour python? 2.4.3
- 4. Module Python pour VBox?
- 5. Comment obtenir le chemin de fichier pour une classe en Python?
- 6. Comment obtenir une référence aux attributs du module en cours en Python
- 7. Comment créer une classe Python en C?
- 8. python Nom du fichier de la classe du module MySQL
- 9. Comment définir une classe en Python
- 10. Combinaison de fichiers de module en Python
- 11. Comment inclure un module dans une classe afin que le module remplace la classe?
- 12. Comment changer un nom de module Python?
- 13. Comment obtenir le nom de fichier du module __main__ en Python?
- 14. Module standard Python pour l'émulation de points géométriques
- 15. En CAL, comment puis-je obtenir une référence à une instance de module?
- 16. Pour chaque fonction en classe dans python
- 17. Module Python pour le balisage wiki
- 18. Installation du module python
- 19. Comment lister toutes les fonctions dans un module Python?
- 20. Module Python SSH/SFTP?
- 21. Comment créer un module python pour MySQL Workbench?
- 22. Comment puis-je obtenir le nom d'une classe python?
- 23. Comment créer une instance d'une classe dans une autre classe en Python
- 24. En Python, comment obtenir l'image actuelle?
- 25. Recherche d'un fichier dans une distribution de module Python
- 26. Existe-t-il un moyen de modifier une classe dans une méthode de classe en Python?
- 27. Mosso Python Module
- 28. Comment savoir quel module de formulaire a appelé votre classe
- 29. Convertir une chaîne en objet de classe Python?
- 30. Comment obtenir le fichier en cours, la classe en cours et la méthode actuelle avec Python?
Eh bien, cela semble fonctionner. J'ose espérer une solution plus propre, mais si rien d'autre ne se présente, je l'accepterai. –
Notez que si vous faites __import __ ('foo.bar') ', cela retournera le module' foo', pas 'foo.bar'. Voir les documents '__import__' pour plus de détails. –
Eh bien, il y a quelques bonnes raisons pour lesquelles la solution de Lukas est bien meilleure. –