関数の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()ます。