Python プロジェクトの文書化に Sphinx を使用しています。私は autodoc 拡張機能を有効にしており、ドキュメントには次のものがあります。
.. autoclass:: ClassName
:members:
問題は、クラス内の非プライベート メソッドのみを文書化することです。プライベートメソッドも含めるにはどうすればよいですか?
Python プロジェクトの文書化に Sphinx を使用しています。私は autodoc 拡張機能を有効にしており、ドキュメントには次のものがあります。
.. autoclass:: ClassName
:members:
問題は、クラス内の非プライベート メソッドのみを文書化することです。プライベートメソッドも含めるにはどうすればよいですか?
Sphinx 1.1 以降を使用している場合は、 http://www.sphinx-doc.org/en/master/ext/autodoc.htmlの sphinx ドキュメント サイトから、
:special-members:
:private-members:
これを回避する 1 つの方法は、Sphinx に明示的にプライベート メンバーのドキュメントを強制することです。automethod
これは、クラス レベルのドキュメントの末尾に追加することで実行できます。
class SmokeMonster(object):
"""
A large smoke monster that protects the island.
"""
def __init__(self,speed):
"""
:param speed: Velocity in MPH of the smoke monster
:type speed: int
.. document private functions
.. automethod:: _evaporate
"""
self.speed = speed
def _evaporate(self):
"""
Removes the smoke monster from reality. Not to be called by client.
"""
pass
を使用して、メンバーをドキュメントに含める必要があるかどうかを判断するためのカスタム メソッドを使用してみましたautodoc-skip-member
か?
いいえ、プライベートとは、クラスに対してプライベートであることを意味し、パブリック API から使用してはならないことを意味します。これは秘密を意味するものではなく、クラスの完全なドキュメント化に sphinx を使用したい私たちにとって、プライベート メソッドを除外するのはかなり面倒です。
前の答えは正しいです。Sphinx は現在、プライベート メソッドと組み合わせて autodoc をサポートしていないため、カスタム メソッドを使用する必要があります。
ここにヒントがあります: プライベートが「秘密」を意味すると想像してください。
そのため、Sphinx はそれらを文書化しません。
「秘密」を意味しない場合は、名前を変更することを検討してください。一般に、先頭にアンダースコアが 1 つ付いた名前は使用しないでください。実装を秘密にしておく理由がない限り、役に立ちません。