如何获取在python中传递给我的装饰器的函数的文件名?

时间:2012-08-28 04:46:08

标签: python metaclass python-datamodel

我想获取正在装饰的函数的原始文件/脚本名称等。我怎样才能做到这一点?

   def decorate(fn):
        def wrapped():
            return "scriptname: " + fn.scriptname?  
        return wrapped

我尝试使用fn.__code__,但这给了我更多我需要的东西。我可以解析该字符串以获取函数名称,但是想知道是否有更优雅的方法来执行此操作

2 个答案:

答案 0 :(得分:12)

import inspect
inspect.getfile(fn)

这对builtin functions不起作用,但是你必须回到inspect.getmodule

答案 1 :(得分:1)

试试这个:

return "filename: " + fn.func_code.co_filename