14

Sphinx autodocを使用してクラスを文書化すると、属性の値は常に報告されますが(ここでは、#437の下にあるはずです)、常に「=なし」として報告されます。

Attribute = None
    Some Documentation

私はそれを次のように含めます

.. autoclass:: core.SomeClass
   :members:

そして私のコードは次のようになります

class SomeClass(object):
    def __init__(self):
        self.attribute = "value" #: Some Documentation

「=なし」に実際の値を報告させる方法、またはそれを非表示にする方法はありますか?

4

5 に答える 5

10

今後のバージョン1.2のsphinx(および2番目のベータ版)にはオプション:annotation:pull-requestを参照)があります。

autodata/の場合autoattribute、特定の値を強制するか、それを抑制することができます。したがって、属性の値を出力しないようにするには、次のようにします。

.. autoclass:: core.SomeClass

   .. autoattribute:: attribute
      :annotation:

現在、/でのみ機能し、/autodataautoattribute再帰的には機能しません。automoduleautoclass

于 2013-01-24T13:56:13.640 に答える
6

これは、属性がインスタンス属性であるという事実と関係があると確信しています。クラスがインスタンス化されるまで、値は取得されません。Sphinxはモジュールを検査するためにモジュールをインポートしますが、クラスをインスタンス化しません。

したがって、「実際の値」はSphinxにNoneは認識されず、出力されます。簡単に削除できるとは思いません(ただし、Sphinxソースコードにパッチを適用する準備ができていれば、何でも可能だと思います...)。これが気に入らない場合は、代わりにクラスのdocstringに属性を文書化することができます。

同じマークアップスキーム(ここで説明)を使用して文書化されたクラス属性は、レンダリングされた出力に値が表示されます。しかし、読者がクラス属性とインスタンス属性を簡単に区別できるようにする明確な兆候はありません。たぶん、スフィンクスはここでもう少し役立つかもしれません。

于 2012-02-16T20:09:52.560 に答える
2

Sphinxの現在のバージョンでは、conf.pyこの問題を修正するモンキーパッチをプロジェクトに配置できます。

from sphinx.ext.autodoc import (
    ClassLevelDocumenter, InstanceAttributeDocumenter)

def iad_add_directive_header(self, sig):
    ClassLevelDocumenter.add_directive_header(self, sig)

InstanceAttributeDocumenter.add_directive_header = iad_add_directive_header

これはSphinxの問題#2044で説明されています

于 2017-03-11T18:19:24.450 に答える
0

これはまだ問題のようです。私はそれを回避しました:

class ValueDoc:

    def __init__(self, text):
        self.text = text

    def __repr__(self):
        return self.text

次に、次のようにクラスレベルで属性を定義します。

#: documentation for foo
foo = ValueDoc('text to show up after =')
于 2016-09-01T16:16:52.963 に答える
0

インスタンス属性に対してアノテーションを機能させることができませんでした。テーマの属性値を非表示にすることを選択しました。

HTMLの例

<dl class="attribute">
  <dt>
    <code class="descName">Attribute</code>
    <em class="property"> = None</em>
  </dt>
</dl>

非表示にするテーマCSS= None

dd dl.attribute em.property { display: none }
于 2017-01-05T15:59:56.777 に答える