質問

私は自分の機能のドックストリングを見せたいのですが、このように使用する場合

@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().

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top