114

给定 Python 中的 C 类,我如何确定该类是在哪个文件中定义的?我需要可以从 C 类或 C 类实例中工作的东西。

我这样做的原因是因为我通常不喜欢将属于同一文件夹的文件放在一起。我想创建一个使用 Django 模板将自身呈现为 HTML 的类。基本实现应根据定义类的文件名推断模板的文件名。

假设我在文件“base/artifacts.py”中放置了一个类 LocationArtifact,那么我希望默认行为是模板名称是“base/LocationArtifact.html”。

4

3 回答 3

157

您可以使用检查模块,如下所示:

import inspect
inspect.getfile(C.__class__)
于 2009-03-30T14:14:55.707 回答
42

尝试:

import sys, os
os.path.abspath(sys.modules[LocationArtifact.__module__].__file__)
于 2009-03-30T14:05:42.530 回答
5

这对 Django 来说是错误的方法,并且真的很强迫。

典型的 Django 应用程序模式是:

  • /项目
    • /应用名称
      • 模型.py
      • 视图.py
      • /模板
        • 索引.html
        • 等等
于 2009-03-30T14:17:09.977 回答