如何解决装饰装饰器-Python 3
我试图在装饰函数的装饰器上进行一些参数修改。
原始代码如下:
@original_decorator(arg=some_object)
def calculate(a,b):
# complex business logic
raise Exception()
其中original_decorator
负责异常处理。
我要实现的是对some_object
进行一些临时修改,并在函数返回后恢复其属性。
我尝试了以下
def replace_arg(arg,add_some_property):
def decorator_wrapper(decorator_func):
def decorator_inner(*decorator_args,**decorator_kwargs):
def actual_wrapper(actual_func):
def actual_inner(*actual_args,**actual_kwargs):
original = arg['func']
arg['func'] = add_some_property
decorator_kwargs['arg'] = arg
result = actual_func(*actual_args,**actual_kwargs)
arg['func'] = original
return result
return actual_inner
return actual_wrapper
return retry_inner
return retry_wrapper
还尝试将修改逻辑放在decorator_inner
中,但都没有起作用。
我的问题:
- 是否可以修改Deorator的论点?
- 如果为true,那么我该如何实现?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。