web-dev-qa-db-ja.com

Sphinxのautodocを使用して、クラスの__init __(self)メソッドを文書化する方法は?

Sphinxはデフォルトでは__init __(self)のドキュメントを生成しません。私は次を試しました:

.. automodule:: mymodule
    :members:

そして

..autoclass:: MyClass
    :members:

Conf.pyでは、次の設定は__init __(self)docstringをクラスdocstringに追加するだけです( Sphinx autodoc documentation これは予想される動作であることに同意するようですが、問題については何も言及していません」 m解決しようとしています):

autoclass_content = 'both'
85
Jacob Marble

次の3つの選択肢があります。

  1. __init__()が常に文書化されるようにするには、 autodoc-skip-member conf.pyで。このような:

    def skip(app, what, name, obj, would_skip, options):
        if name == "__init__":
            return False
        return would_skip
    
    def setup(app):
        app.connect("autodoc-skip-member", skip)
    

    これは明示的に__init__はスキップされません(これはデフォルトです)。この構成は1回指定され、.rstソースのすべてのクラスに追加のマークアップを必要としません。

  2. special-members オプションは Sphinx 1.1で追加 でした。 「特別な」メンバー(__special__)autodocによって文書化されます。

    Sphinx 1.2以降、このオプションは引数を取り、以前よりも便利になりました。

  3. automethodを使用します。

    .. autoclass:: MyClass     
       :members: 
    
       .. automethod:: __init__
    

    これはすべてのクラスに追加する必要があります(この回答の最初のリビジョンへのコメントで指摘されているように、automoduleと共に使用することはできません)。

94
mzjn

あなたは近くにいました。 autoclass_content オプションconf.pyファイル:

autoclass_content = 'both'
55
gotgenes