以下の様に関数の前/後処理をするデコレーター (tag付き) を作って使い回したい.
>>> @MyDecorator('any-tag')
... def foo():
... print u'foo'
...
>>> foo():
pre-action. tag=any-tag.
foo
post-action. tag=any-tag.
この様にして作る.
class MyDecorator(object):
def __init__(self, tag):
self._tag = tag
def __call__(self, f0):
def decorated(*args, **kwargs):
print u'pre-action. tag=' + self._tag
ret = f0(*args, **kwargs)
print u'post-action. tag=' + self._tag
return ret
return decorated
functools.wrapsを使った版.
@termoshtt さん、ありがとうございます (^◇^)
from functools import wraps
def MyDecorator(tag):
def dec(f0):
@wraps(f0)
def decorated(*args, **kwargs):
print u'pre-action. tag=' + tag
ret = f0(*args, **kwargs)
print u'post-action. tag=' + tag
return ret
return decorated
return dec