修复装饰器参数

时间:2014-04-27 07:02:54

标签: python decorator functools

我有以下第三方装饰者:

def retry(exception_to_check, tries=4, delay=3, backoff=2, logger=None):

我想创建另一个装扮器@my_retry,它类似于@retry,但带有固定的参数。

我已尝试使用functools.partial

my_retry = partial(retry, RETRY_EXCEPTIONS, tries=5, delay=5, backoff=3, logger=logging)

但是当我使用新的装饰器时,我得到以下异常:

TypeError: retry() got multiple values for keyword argument 'tries'

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您需要做的是围绕retry创建一个包装器,就像这样

def my_retry(retry_exceptions, tries=5, delay=5, backoff=3, logger=logging):
    return retry(retry_exceptions, tries, delay, backoff, logger)

并使用@my_retry()