12

autodocSphinx を使用して Python プロジェクトを文書化しようとしていますが、拡張機能をnamedtuple生成されたクラスと組み合わせることができません。

ある文書にはgammatone.rst、次のものが含まれています。

:mod:`gammatone` -- gammatone filterbank toolkit
================================================

.. automodule:: gammatone
   :members:
.. automodule:: gammatone.coeffs
   :members:

gammatone/coeffs.pyの には、次のものがあります。

from collections import namedtuple

ERBFilterCoeffs = namedtuple(
    'ERBFilterCoeffs', # Most parameters omitted
    [
        'A0',
        'gain',
    ])

によって生成されたコードにnamedtupleは、Sphinx のautodocモジュールが取得してインクルードする非常に一般的なドキュメント文字列が含まれています。autodocモジュールの残りの部分を無視せずに、自分でクラスを適切に文書化したいと思います。

クラスの直前に次のようなものを入れてみました:

"""
.. class:: ERBFilterCoeffs(A0, gain)
:param A0: A0 coefficient
:param gain: Gain coefficient

Magic coefficients.
"""

...しかし、生成されたドキュメントには表示されません。クラスの後に置くと、それを置き換えるのではなく、ジェネリック クラスのドキュメントの下にネストされます。

によって生成されたものではなく、クラスautodocのドキュメントを使用するように Sphinx (および拡張機能) に指示するにはどうすればよいですか?ERBFilterCoeffsnamedtuple

4

3 に答える 3

13

実際には、namedtuple を拡張する必要はまったくありません。namedtuple の後に docstring を置くことができます。これは、実際には定数と属性にも機能します。

ERBFilterCoeffs = namedtuple('ERBFilterCoeffs', ['A0', 'gain', ])
""" Magic coefficients.

.. py:attribute:: A0

    The A0 attribute is something

.. py:attribute:: gain

    The gain attribute is blah blah

"""
于 2013-12-13T18:23:17.460 に答える
7

ERBFilterCoeffsnamedtuple で定義した後、その doc 文字列を に割り当ててみてはERBFilterCoeffs.__doc__どうでしょうか。

編集:わかりました、これはどうですか:

class ERBFilterCoeffs(namedtuple('ERBFilterCoeffs','a b c')):
    """
    this is the doc string for ERBFilterCoeffs
    """
于 2012-12-09T06:14:45.710 に答える