2014-04-27 67 views
2

我有以下的第三方裝飾:固定裝飾參數

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

你需要做的就是讓一個包裝周圍retry,這樣

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

,並使用@my_retry()

+0

謝謝!我試過它,它的工作原理,除了我必須使用'@my_retry()'。 – Tzach

+0

@Tzach是的,我們用自定義函數包裝了'retry'的功能...... :( – thefourtheye

+0

這很好,請更新答案,我會接受。 – Tzach