¿Cómo consigo la ruta de archivo para una clase en Python?
-
22-08-2019 - |
Pregunta
Dada una clase C en Python, ¿cómo puedo determinar qué archivo de la clase se define en? Necesito algo que puede funcionar ya sea de la clase C, o desde una instancia de C.
La razón por la que estoy haciendo esto, es porque soy generalmente un ventilador desagradable archivos que pertenecen juntos en la misma carpeta. Quiero crear una clase que utiliza una plantilla de Django para rendir como HTML. La implementación base debe inferir el nombre de archivo para la plantilla basada en el nombre de archivo que la clase se define en.
Digamos que pongo un LocationArtifact clase en el archivo "base / artifacts.py", entonces quiero el comportamiento por defecto a ser que el nombre de la plantilla es "base / LocationArtifact.html".
Solución
Puede utilizar el inspeccionar módulo, de esta manera:
import inspect
inspect.getfile(C.__class__)
Otros consejos
intento:
import sys, os
os.path.abspath(sys.modules[LocationArtifact.__module__].__file__)
Este es el enfoque equivocado para Django y realmente forzar las cosas.
El patrón de aplicación típico Django es:
- / proyecto
- / nombreaplic
- models.py
- views.py
- / templates
- index.html
- etc.
- / nombreaplic