我在與裝飾的第一個經驗,我創建了一個裝飾類,用於過濾目標函數的結果,在默認情況下會返回一個特定的順序:參數傳遞給裝飾器時調用裝飾功能
class Filter(object):
def __init__(self, id=None):
self.id = id
def __call__(self, func):
def wrapper(*args):
entity_ids = func(*args)
result = {}
for k, v in entity_ids.items():
if self.id:
if '_' + str(self.id) in k:
result.update({k: v})
return result
return wrapper
我用的裝飾在一些其他類的方法是這樣的:
class SomeClass(object):
@Filter(id=None)
def get_ids(*args):
return result_sequence
我如何定義的論據,裝飾調用類方法時:
>>>sc = SomeClass()
>>>sc.get_ids(*args) # I want to pass the id kwarg for Filter here
在此先感謝
def wrapper(* args,id = None):引發SyntaxError:無效語法 –
@FrancescoDellaVedova Thx,已更正。 – glglgl