是否可以获取包含该类的文件的名称?变量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__))
答案 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__
更可靠);它只能告诉你类的定义,而不是实例的定义。