我的目标是在方法执行期间找到文件的名称。主要问题是我使用 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 文件?