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".

¿Fue útil?

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.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top