デコレータで docstring を使用する際に問題があります。次の例を考えます。
def decorator(f):
def _decorator():
print 'decorator active'
f()
return _decorator
@decorator
def foo():
'''the magic foo function'''
print 'this is function foo'
help(foo)
foo
期待どおりの docstring がヘルプに表示されなくなりました。次のように表示されます。
Help on function _decorator in module __main__:
_decorator()
デコレータがなければ、ヘルプは正しいです:
Help on function foo in module __main__:
foo()
the magic foo function
関数foo
はデコレータによってラップされているため、関数オブジェクトはもはや関数ではありませんfoo
。しかし、期待どおりにドキュメント文字列 (およびヘルプ) を取得するための優れたソリューションは何ですか?