1. ホーム
  2. python

[解決済み] Sphinxのautodocを使って、クラスの__init__(self)メソッドをドキュメント化するにはどうしたらいいですか?

2022-09-24 21:49:25

質問

Sphinxはデフォルトでは__init__(self)に対してドキュメントを生成しません。私は以下を試しました。

.. automodule:: mymodule
    :members:

..autoclass:: MyClass
    :members:

conf.pyで、以下を設定すると、クラスのdocstringに__init__(self)のdocstringが追加されるだけです( Sphinx autodoc ドキュメント は、これが期待される動作であることに同意しているようですが、私が解決しようとしている問題に関しては何も言及していません)。

autoclass_content = 'both'

どのように解決するのですか?

ここでは、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__ をスキップしないよう明示的に定義しています (デフォルトではスキップされます)。この設定は一度だけ指定され、.rstソースのすべてのクラスに対して追加のマークアップは必要ありません。

  2. special-members オプションは は、Sphinx 1.1 で追加された . これは、特別なメンバー(例えば __special__ のような名前のもの) が autodoc によって文書化されるようにします。

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

  3. 使用方法 automethod :

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

    これはクラスごとに追加する必要があります。 automodule とは併用できません)。