2013-07-24 1 views
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?

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^