我的代码中有其他人写的这个装饰器,我无法得到它
def mydecorator(a, b):
def f1(func):
def new_func(obj):
try:
f= func(obj)
except Exception as e:
pass
else:
if f is None:
pass
else:
f = f, a, b
return f
return new_func
return f1
这适用于这样的功能
@mydecorator('test1', 'test2')
def getdata():
pass
我的想法是装饰器将函数名称作为参数但是在这里
我无法从func
来自obj
来到哪里
答案 0 :(得分:4)
这 -
@mydecorator('test1', 'test2')
def getdata():
pass
类似于(没有创建decofunc
名称) -
decofunc = mydecorator('test1', 'test2')
@decofunc
def getdata():
pass
由于mydecorator()
返回f1
,它接受函数作为参数。
然后它将getdata
函数作为参数。并返回new_func
,名称getdata
将替换为此new_func
,因此每当您致电getdata()
时,它都会调用此new_func
函数,该函数会在内部调用您的getdata()
原始{{1}}功能。