ここで説明されているように、機能構文でデコレータを使用しています。
dictのリストをループします。このループでは、パラメーターを受け取るデコレーターでジェネリック関数をラップします。次に、現在のdictをパラメーターとしてラップ関数を呼び出します。
私の問題は、local variable 'generic_evaluator' referenced before assignment
エラーが発生することです。
これが私のコードです:
関係するデコレータ:
def log(logfile_name):
def inner_log(func):
def wrapped(*args, **kwargs):
import os
ret = func()
# business code...
return wraps(func)(wrapped)
return inner_log
そして、ここで私がデコレータgeneric_evaluator
で関数をラップする場所。log
for evaluation in generic_evaluations:
generic_evaluator = log(evaluation['suffix'])(generic_evaluator)
generic_evaluator(evaluation['suffix'], evaluation['id'])
編集
さらに、このコードを使用すると、おそらくより明確になります。
@tictoc
def generic_evaluator(suffix_url, id):
xml = etree.parse(get_resource(base_url + "/" + suffix_url + "/" + str(id)))
links = fetch_urls_from_xml(xml)
return links