如何获取包含该类的文件的名称?

时间:2017-01-24 01:23:44

标签: python

是否可以获取包含该类的文件的名称?变量exporter是下面的类。

def main(exporter):

    v = exporter
    print v # <__main__.Vudu object at 0x106ea5210>
            # The class is "Vudu" and the filename that contains that class
            # is called vudu_exporter. How would I get "vudu_exporter" ?

更新:以下方法可以获取包含该类的脚本的名称:

script_name = os.path.basename(inspect.getfile(v.__class__))

1 个答案:

答案 0 :(得分:1)

在类/函数/方法/模块上调用inspect.getfile。它不能保证工作,但它比仅检查对象的the __file__ attribute更可靠(例如,在Python 3.5上,inspect.getfile(collections.defaultdict)起作用,而collections.defaultdict.__file__引发AttributeError)。

如果你有一个实例,如果没有先转换为类,这将无法工作,例如inspect.getfile(type(instance))(在Python 2上,使用旧式类可以使instance.__class__更可靠);它只能告诉你类的定义,而不是实例的定义。