import sys
def entryExit(f):
def new_f(self,*args):
print "Entering", f.__name__,self.__class__.__name__
f(self,*args)
print "Exited", f.__name__,self.__class__.__name__
return new_f
class A:
@entryExit
def move(self,g,h):
print "hello"
print g,h
a=A()
a.move(5,7)
以上代码输出
Entering move A
hello
5 7
Exited move A
我能够检索方法名称以及使用装饰器定义它的类。但我无法在运行时检索方法参数的名称。
基本上我需要像这样的输出
Entering move A g,h
hello
5 7
Exited move A g,h
那么我应该在print语句中添加什么来获得如上所述的输出。
谢谢
答案 0 :(得分:3)
您可以使用inspect.getargspec
。
e.g:
import sys
import inspect
def entryExit(f):
def new_f(self,*args):
print "Entering", f.__name__,self.__class__.__name__,inspect.getargspec(f).args[1:]
f(self,*args)
print "Exited", f.__name__,self.__class__.__name__
return new_f
class A:
@entryExit
def move(self,g,h):
print "hello"
print g,h
a=A()
a.move(5,7)
结果:
Entering move A ['g', 'h']
hello
5 7
Exited move A