関数のdocstringを表示したいのですが、このように使用すると
@cost_time
def func():
"define ...."
blabla
print func.__doc__
メタプログラミングのトリッキーを使用しているという理由だけで、ドキュメント文字列が表示されません。これを修正するにはどうすればよいですか?
デコレータから返されたラップされた関数には、 のcost_time
代わりに docstring が必要ですfunc
。したがって、functools.wraps
と を正しく設定するものを使用__name__
し__doc__
ます。
from functools import wraps
def cost_time(fn):
@wraps(fn)
def wrapper():
return fn()
return wrapper
を使用しfunctools.wraps()
ます。