Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

Вы можете использовать модуль inspect, например:

import inspect
inspect.getfile(C.__class__)

Ответ 2

попробовать:

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

Ответ 3

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

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

  • /проект
    • /имя_приложения
      • models.py
      • views.py
      • /шаблоны
        • index.html
        • и др.