31

私は sphinx autodoc拡張機能を使用しようとしています。具体的には、automodule作業中の django アプリのドキュメントを自動的に生成するディレクティブを使用しようとしています。問題は、プロジェクト内のすべてのクラス/関数を使用autoclassせずに、モジュール内のさまざまなクラスへの内部参照を作成したいことです。autofunction次のようなソース ファイルの場合:

# source_code.py
class A:
    """docs for A
    """
    pass

class B:
    """docs for B with 
    :ref:`internal reference to A <XXXX-some-reference-to-A-XXXX>`
    """
    pass

次のようなスフィンクス ドキュメント ファイルを作成できるようにしたいと考えています。

.. automodule: source_code

XXXX-some-reference-to-A-XXXX にはどの参照を使用できますか? これを達成する簡単な方法はありますか?よろしくお願いします。

4

2 に答える 2

55

次のようなクラスを参照できます。

class B(object):
    """docs for B with reference to :class:`.A`"""
    pass

Sphinx は、あなたが何を参照しているのかを賢く理解しようとします。という名前のクラスが複数ある場合A、警告が表示されることがありますが、現在のモジュール内のクラスが選択されます。

于 2011-10-13T12:33:55.770 に答える
14

問題を理解しているかどうかはわかりませんが、 Pythonオブジェクトの相互参照に従って、autodocを使用すると問題なく機能します。

class FlowDirection(GeneralTable):
    '''
    Heat Flow Direction

    :cvar int id: database primary key
    :cvar unicode name: name 
    '''
    def __repr__(self):
        return u'<FlowDirection {0} instance at {1}>'.format(
                self.name, hex(id(self))).encode('utf-8')

    def __unicode__(self):
        return self.name

class AirCavityRes(GeneralTable):
    '''
    Air Cavity :term:`thermal resistance`

    :cvar flow_direction: heat flow direction
        (see :class:`FlowDirection`)
    :cvar int id: database primary key
    :cvar int if_fd: database foreign key to :class:`FlowDirection`
    :cvar float res: :term:`thermal resistance`
    :cvar float thick: thickness
    '''
    def __repr__(self):
        return u'<AirCavityRes {0} instance at {1}>'.format(
                self.res, hex(id(self)))
于 2011-10-13T12:31:21.063 に答える