我在与装饰的第一个经验,我创建了一个装饰类,用于过滤目标函数的结果,在默认情况下会返回一个特定的顺序:参数传递给装饰器时调用装饰功能
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