为了账号安全,请及时绑定邮箱和手机立即绑定

python被装饰的函数怎么获取其装饰器的变量或返回值?

python被装饰的函数怎么获取其装饰器的变量或返回值?

DIEA 2019-05-10 15:44:27
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的时候把参数传过去
fromfunctoolsimportwraps
deftest(func):
@wraps(func)
definner_func():
inner_obj='inner_obj'
print(inner_obj)
returnfunc(inner_obj)#
returninner_func
@test
deftest_func(obj):
print(obj)#
returnFalse
a=test_func()
print(a)
                            
查看完整回答
反对 回复 2019-05-10
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

作为参数传进去吧。
fromfunctoolsimportwraps
defdecorator(func):
@wraps(func)
definner_func():
inner_obj='inner_obj'
print("ininner_func:{}".format(inner_obj))
returnfunc(inner_obj)
returninner_func
@decorator
deffunc_with_param(*args):
print("infunc_with_parm:{}".format(args[0]))
func_with_param()#调用
#ininner_func:inner_obj
#infunc_with_parm:inner_obj
                            
查看完整回答
反对 回复 2019-05-10
  • 2 回答
  • 0 关注
  • 2242 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号