126 votes

Comment obtenir le chemin d'accès d'une classe en Python ?

Étant donné une classe C en Python, comment puis-je déterminer dans quel fichier la classe a été définie ? J'ai besoin de quelque chose qui puisse fonctionner soit à partir de la classe C, soit à partir d'une instance de C.

La raison pour laquelle je fais cela, c'est que je suis généralement partisan de mettre les fichiers qui vont ensemble dans le même dossier. Je veux créer une classe qui utilise un modèle Django pour se rendre en HTML. L'implémentation de base doit déduire le nom de fichier du modèle en fonction du nom de fichier dans lequel la classe est définie.

Supposons que je mette une classe LocationArtifact dans le fichier "base/artifacts.py", je veux que le comportement par défaut soit que le nom du modèle soit "base/LocationArtifact.html".

174voto

DNS Points 17577

Vous pouvez utiliser le inspecter comme suit :

import inspect
inspect.getfile(C.__class__)

47voto

Jarret Hardie Points 36266

Essayer :

import sys, os
os.path.abspath(sys.modules[LocationArtifact.__module__].__file__)

5voto

Soviut Points 26384

C'est une mauvaise approche pour Django et cela force vraiment les choses.

Le schéma typique d'une application Django est le suivant :

  • /projet
    • /nom de l'application
      • models.py
      • views.py
      • /templates
        • index.html
        • etc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X