28

Python プロジェクトの文書化に Sphinx を使用しています。私は autodoc 拡張機能を有効にしており、ドキュメントには次のものがあります。

.. autoclass:: ClassName
   :members:

問題は、クラス内の非プライベート メソッドのみを文書化することです。プライベートメソッドも含めるにはどうすればよいですか?

4

8 に答える 8

32

Sphinx 1.1 以降を使用している場合は、 http://www.sphinx-doc.org/en/master/ext/autodoc.htmlの sphinx ドキュメント サイトから、

:special-members:
:private-members:
于 2011-10-12T12:47:28.183 に答える
9

これを回避する 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
于 2011-05-24T07:02:59.790 に答える
4

を使用して、メンバーをドキュメントに含める必要があるかどうかを判断するためのカスタム メソッドを使用してみましたautodoc-skip-memberか?

于 2009-07-19T06:28:49.027 に答える
2

いいえ、プライベートとは、クラスに対してプライベートであることを意味し、パブリック API から使用してはならないことを意味します。これは秘密を意味するものではなく、クラスの完全なドキュメント化に sphinx を使用したい私たちにとって、プライベート メソッドを除外するのはかなり面倒です。

前の答えは正しいです。Sphinx は現在、プライベート メソッドと組み合わせて autodoc をサポートしていないため、カスタム メソッドを使用する必要があります。

于 2009-07-29T13:00:36.573 に答える
-8

ここにヒントがあります: プライベートが「秘密」を意味すると想像してください。

そのため、Sphinx はそれらを文書化しません。

「秘密」を意味しない場合は、名前を変更することを検討してください。一般に、先頭にアンダースコアが 1 つ付いた名前は使用しないでください。実装を秘密にしておく理由がない限り、役に立ちません。

于 2009-07-19T11:37:02.663 に答える