问题描述
我在一个类中有一个装饰器方法,我正在尝试为调用该方法时添加参数,例如:
@log.diagnostic(DEBUG=True)
def exmp_function():
'''
Some stuff
'''
然后,在装饰器中,我需要访问传递的参数(例如 DEBUG)以及一些 self.attributes:
def diagnostic(self,*args,**kwargs):
self.DEBUG = args[0]
def error_wrap(function): # DEBUG here isn't recognised
@functools.wraps(function)
def wrapper(*args,**kwargs):
try:
result = function(*args,**kwargs)
self.status = 'OK'
except Exception as error:
self.status = 'ERROR'
result = 'Error'
finally:
self.to_File([self.file,self.status,self.DEBUG]) # self.file is defined outside
return result
return wrapper
return error_wrap
目前,self.
属性是正确的,但是,decorator 参数始终是最后一个被调用的装饰器的参数。我认为这是因为每个装饰器都调用了外部包装器,然后将 self.DEBUG 作为最后一个装饰器参数。
因此,我需要找到一种方法将我的 DEBUG 参数向下传递两层。但我找不到办法做到这一点。
如有任何帮助,将不胜感激!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)