Ответ 1
Вы можете использовать модуль inspect, например:
import inspect
inspect.getfile(C.__class__)
Учитывая класс C в Python, как определить, в каком файле был определен класс? Мне нужно что-то, что может работать либо из класса C, либо из экземпляра с C.
Причина, по которой я это делаю, заключается в том, что я вообще поклонник размещения файлов, которые принадлежат друг другу в одной папке. Я хочу создать класс, который использует шаблон Django для отображения себя как HTML. Базовая реализация должна вывести имя файла для шаблона на основе имени файла, в котором этот класс определен.
Скажем, я поместил класс LocationArtifact в файл "base/artifacts.py", тогда я хочу, чтобы по умолчанию было указано, что имя шаблона "base/LocationArtifact.html".
Вы можете использовать модуль inspect, например:
import inspect
inspect.getfile(C.__class__)
попробовать:
import sys, os
os.path.abspath(sys.modules[LocationArtifact.__module__].__file__)
Это неправильный подход для Django и действительно заставляет вещи.
Типичный шаблон приложения Django: