クラスに基づいたPythonデコレーター
Python デコレータは通常、関数を使用して作成されます。別の関連する 投稿 を参照してください。ただし、この投稿では、クラスを使用してデコレータを作成する方法の例も示しています。
In [1]: def greet(name):
...: print("Hi %s" % name)
...:
In [2]: greet("Andy")
Hi Andy
In [3]: class Polite(object):
...: def __init__(self, func):
...: self.func = func
...: def __call__(self, *args, **kwargs):
...: self.func(*args, **kwargs)
...: print("Nice to meet you")
...:
In [4]: @Polite
...: def greet(name):
...: print("Hi %s" % name)
...:
In [5]: greet("Andy")
Hi Andy
Nice to meet you