私はデコレータを初めて体験しました。デフォルトで特定のシーケンスを返すターゲット関数の結果をフィルタリングするデコレータ クラスを作成しました。
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
前もって感謝します