python __doc__ docstringについて
質問
私は自分の機能のドックストリングを見せたいのですが、このように使用する場合
@cost_time
def func():
"define ...."
blabla
print func.__doc__
Docstringは表示されません。メタプログラミングをトリッキーに使用しているからといって、これを修正するにはどうすればよいですか?
解決
ラップされた関数はから返されました 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()
.
所属していません StackOverflow