fromfunctoolsimportwrapsdeftest(func):@wraps(func)definner_func():inner_obj='inner_obj'print(inner_obj)returnfunc()returninner_func@testdeftest_func():returnFalsea=test_func()print(a)我想在test_func中获取装饰器的inner_obj变量,能实现吗??请问
2 回答

慕的地8271018
TA贡献1796条经验 获得超4个赞
当然可以了。你可以给test_func加一个参数嘛。在inner_func中调用test_func的时候把参数传过去fromfunctoolsimportwrapsdeftest(func):@wraps(func)definner_func():inner_obj='inner_obj'print(inner_obj)returnfunc(inner_obj)#returninner_func@testdeftest_func(obj):print(obj)#returnFalsea=test_func()print(a)

慕盖茨4494581
TA贡献1850条经验 获得超11个赞
作为参数传进去吧。fromfunctoolsimportwrapsdefdecorator(func):@wraps(func)definner_func():inner_obj='inner_obj'print("ininner_func:{}".format(inner_obj))returnfunc(inner_obj)returninner_func@decoratordeffunc_with_param(*args):print("infunc_with_parm:{}".format(args[0]))func_with_param()#调用#ininner_func:inner_obj#infunc_with_parm:inner_obj
添加回答
举报
0/150
提交
取消