Как получить путь к файлу для класса в Python?


учитывая класс C в Python, как я могу определить, в каком файле был определен класс? Мне нужно что-то, что может работать либо из класса C, либо из экземпляра от C.

причина, по которой я это делаю, заключается в том, что я обычно поклонник выкладывать файлы, которые принадлежат вместе в одной папке. Я хочу создать класс, который использует шаблон Django для визуализации себя как HTML. Базовая реализация должна вывести имя файла для шаблона на основе имени файла, что класс определяется В.

скажем, я помещаю класс LocationArtifact в файл "base/artifacts.py", тогда я хочу, чтобы поведение по умолчанию было таким, что имя шаблона - " base / LocationArtifact.формат HTML."

3 64

3 ответа:

можно использовать проверить модуль, вроде этого:

import inspect
inspect.getfile(C.__class__)

попробуй:

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

Это неправильный подход для Django и действительно заставляет вещи.

типичный шаблон приложения Django:

  • / project
    • /имя_приложения
      • models.py
      • views.py
      • / templates
          .HTML-код
      • etc.