残念ながら(選択ではなく) python 2.4を使用しているため、2.5で追加された素晴らしいもの(functoolsなど)は役に立ちません
関数をラップしたいのですが、help(wrapper) を実行すると、ラップする関数のように見えるようにします。
私はこれを行うことで部分的に達成しました
def a():
"""a's docstring"""
pass
def wrapper():
a()
wrapper.func_name = a.func_name #or should this use __name__ ?
wrapper.func_doc = a.func_doc #or should this use __doc__ ?
現在、関数名との docstring のhelp(wrapper)
表示を行っています。ハックに感じるだけでなく、これは次のような場合の関数パラメーターをカバーしていません。a
a
def b(x, y, z):
return a+b+c #or whatever
def wrapper(*args, **kwargs):
#do something with the arguments
return b(*args **kwargs)
help(wrapper)
b(*args, **kwargs)
明らかに、これは私が望むものではないように見えます。dir(a)
どこかにネストされていない限り、私を助けることができる属性はないようです。
編集: pypi を使用できる場合は、これに役立つデコレータ モジュールを参照してください。