我使用的是python3.5,我试图删除/重置由装饰器创建的变量。当我试图重置/删除calls
时,我遇到了错误。我不知道我做错了什么。也许我调用的不是函数变量的正确实例?老实说,由于pdb的输出,我不知道变量调用的位置。在
import inspect
def logWrapper(func):
def wrapper_func(self, *args, **kwargs):
wrapper_func.calls += 1
print('Func: {}; Calls: {}' .format(func.__name__, wrapper_func.calls) )
return func(self, *args, **kwargs)
wrapper_func.calls=0
return wrapper_func
class A:
def __init__(self):
print('created')
@logWrapper
def myfunction1(self, var1):
print('var1: {}' .format(var1))
@logWrapper
def myfunction2(self, var2):
print('var2: {}' .format(var2))
if __name__ == "__main__":
Pal1=A()
Pal1.myfunction1('1')
Pal1.myfunction1('2')
Pal1.myfunction1('3')
Pal1.myfunction2('A')
function_list=inspect.getmembers(Pal1, predicate=inspect.ismethod)
for func in function_list:
method_to_call = getattr(Pal1, func[0])
try:
#try to call attribute calls if exist otherwise next function
print( 'Result-> Function: {}; Calls: {}' .format(func[0], method_to_call.calls))
except AttributeError:
continue
#Here: Only when no Exception occured
method_to_call.calls = 0
#del method_to_call.calls
Pal1.myfunction1('X')
Pal1.myfunction1('Y')
输出:
^{pr2}$PDB向我展示:
^{3}$
目前没有回答
相关问题 更多 >
编程相关推荐