1
我的目標是在方法執行期間找到文件的名稱。主要問題是我使用python裝飾器來轉換一個函數。這個裝飾器在一個單獨的文件中並被導入到當前文件中。我已經解釋過用下面一個小場景的問題:如何確定pythondecorator函數中的被調用者詳細信息?
代碼情景
#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
我可以從「實際輸出」的裝飾導入並每次調用方法時,瞭解它去「裝飾.py「文件並執行,因此我們得到的輸出顯示在」實際輸出「中。
是否有我可以得到需要的輸出,但仍然在我導入Decorator.py文件?