6

私はreStructuredTextを使用してコードを文書化し、epydocを使用してオフラインのHTMLページを取得しています。

結果は素晴らしいです。唯一の欠点は、Pythonインタラクティブシェルを使用すると、help()関数がドキュメント文字列のreSTメタデータを解析せず、代わりにすべてをそのまま表示することです。

docstringの最小限の解析を行うためにhelp()を使用する方法はありますか?

イタリックフォントやハイパーリンクのレンダリングは期待していませんが、読みやすさを向上させるために少なくともいくつかの最小限のクリーンアップを期待しています。

4

1 に答える 1

4

このhelp()関数は、モジュールによって組み込みの名前空間に追加されます。この名前空間は、パスのどこかにモジュールsiteを作成することでカスタマイズできます(通常、サイトパッケージに保持されているようです)。sitecustomize.py

次に、sitecustomize.pyファイルに必要なカスタマイズを追加します。

これはいくつかの方法で処理できます。

関数自体の(見かけの)動作を変更したい場合はhelp()、ヘルプ関数を次のようなデコレータでラップします。

def help_wrapper(func):
    def inner(*args):
        results = func(*args)
        return your_cleanup_function_here(results)
help = help_wrapper(help)

RestructuredTextで書かれていない出力を助けるためにクリーンアップ関数が何をするかわからないので、私は個人的に少し異なる解決策を好みます。

だから私はラッパー関数を作成するだけです:

def my_help(*args):
    return your_cleanup_function_here(help(*args))

help()このようにして、必要に応じて元の関数にアクセスできます。

警告:sitecustomize.pyで作業を行う場合は注意が必要です。ここで行うことは、インタプリタセッション全体(およびすべてのインタプリタセッション)に影響を与える可能性があり、意図しない結果につながる可能性があります。

于 2011-02-10T20:58:11.170 に答える