作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的目标是在方法执行期间查找文件的名称。主要问题是我使用 python 装饰器来转换函数。该装饰器位于单独的文件中,并被导入到当前文件中。我用下面的一个小场景解释了这个问题:
代码场景
#Normal.py
import decorator
class A:
@entryExit
def move(self):
print "hello"
a=A()
a.move()
#decorator.py
import sys
import inspect
def entryExit(f):
def new_f(self,*args, **kwargs):
File_Name=inspect.getfile(inspect.currentframe()).split("\\")
print 'Entry',f.__name__,self.__class__.__name__,File_Name[-1]
f(self,*args)
print 'Exit',f.__name__,self.__class__.__name__,File_Name[-1]
return new_f
Actual Output:
Entry move A decorator.py
hello
Exit move A decorator.py
Needed Output:
Entry move A Normal.py
hello
Exit move A Normal.py
我可以从“实际输出”中了解到装饰器已导入,每次调用方法时,它都会转到“decorator.py”文件并执行,因此我们得到“实际输出”中显示的输出。
无论如何,我可以获得所需的输出,但同时仍导入 Decorator.py 文件吗?
最佳答案
将您的 File_Name
分配更改为:
File_Name = inspect.getfile(f)
做你想做的事。inspect.getfile()
将一个对象作为参数,f
表示包装的函数。
来源:http://docs.python.org/2/library/inspect.html#inspect.getfile
关于python - 如何确定 pythondecorator 函数中的被调用者详细信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17839322/
我的目标是在方法执行期间查找文件的名称。主要问题是我使用 python 装饰器来转换函数。该装饰器位于单独的文件中,并被导入到当前文件中。我用下面的一个小场景解释了这个问题: 代码场景 #Normal
我是一名优秀的程序员,十分优秀!