4

関数のdocstringを表示したいのですが、このように使用すると

@cost_time
def func():
    "define ...."
    blabla
print func.__doc__

メタプログラミングのトリッキーを使用しているという理由だけで、ドキュメント文字列が表示されません。これを修正するにはどうすればよいですか?

4

2 に答える 2

12

デコレータから返されたラップされた関数には、 のcost_time代わりに docstring が必要ですfunc。したがって、functools.wrapsと を正しく設定するものを使用__name____doc__ます。

from functools import wraps

def cost_time(fn):
    @wraps(fn)
    def wrapper():
        return fn()

    return wrapper
于 2010-10-05T15:43:20.723 に答える
2

を使用しfunctools.wraps()ます。

于 2010-10-05T15:39:20.993 に答える