0

pydoc の出力は、結果 (メソッドとその docstring) をアルファベット順に並べ替えます。これは良いことですが、私は新しいものの上にとどまりたいと思っています。モジュールに新しいメソッドを追加するときは、それを最初のメソッドとして追加するので、新しいメソッドを追加するたびに、それがファイルの最初のメソッドになります。

メソッドがファイルにあるのと同じ順序でpydoc出力を表示したい。

これは可能ですか?

例:

ここに私のモジュール pydoc_test.py があります:

#!/usr/bin/python
def test_my_code():
    """
    Docstring for test_my_code()
    :return:
    """
    pass


def add_my_code():
    """
    Docstring for add_my_code()
    :return:
    """
    pass

「pydoc pydoc_test」の出力は次のとおりです。

Help on module pydoc_test:

NAME
    pydoc_test

FILE
    /Users/myname/Documents/scripts/python_learning/pydoc_test.py

FUNCTIONS
    add_my_code()
        Docstring for add_my_code()
        :return:

    test_my_code()
        Docstring for test_my_code()
        :return:

pydoc は最初に「add_my_code」、次に「test_my_code」を表示しますが、ファイルと同じ順序が必要です。

4

1 に答える 1

1

私は最近同じ問題に遭遇しました。ドキュメンテーションからわかる限り、pydoc 自体はこのオプションを提供しません。

あなたができる唯一のことは、pydocの出力をキャッチすることだと思います:

import pydoc
import pydoc_test
docstrings = pydoc.render_doc(pydoc_test)

そしてそれを解析して、個別のdocstringを取得します。

次に、pydoc_test.py を読み取り、「def」を検索して関数名を取得し、pydoc_test.py に表示される順序に従って pydoc docstring を並べ替えます。

非常に醜い、私は同意します。これは、必要なものを取得するための非常に迂遠な方法であると思います。pydoc をすべて忘れて、単に pydoc_test.py ファイルを直接読み取り、それを解析して docstring を取得することもできます。

于 2016-01-12T00:56:28.053 に答える