2012-06-26 14 views
5

sphinx documentationによれば、.. autoattributeディレクティブはインスタンス属性を文書化できるはずです。でも、私はElementTreeをインスタンス化し、試してみて、_root属性にアクセスする場合も、それが正常に動作しますオートクレーシスとインスタンス属性

Traceback (most recent call last):etree.ElementTree.ElementTree     
    File "/Volumes/Raptor/Library/Python/2.7/lib/python/site-packages/sphinx/ext/autodoc.py", line 326, in import_object 
    obj = self.get_attr(obj, part) 
    File "/Volumes/Raptor/Library/Python/2.7/lib/python/site-packages/sphinx/ext/autodoc.py", line 232, in get_attr 
    return safe_getattr(obj, name, *defargs) 
    File "/Volumes/Raptor/Library/Python/2.7/lib/python/site-packages/sphinx/util/inspect.py", line 70, in safe_getattr 
    raise AttributeError(name) 
AttributeError: _root 

::

:構築するとき、私はその後::

.. currentmodule:: xml.etree.ElementTree 

.. autoclass:: ElementTree 

    .. autoattribute:: ElementTree._root 

を行う場合しかし、私ははAttributeErrorを取得します

>>> from xml.etree.ElementTree import ElementTree 
>>> e = ElementTree() 
>>> hasattr(e, '_root') 
True 

私は間違っていますか?

(私は実際に自分のクラスのいずれかでこの問題を抱えているが、それは標準ライブラリにありますので、あくまでも一例として、ElementTreeのクラスを使用しています)

答えて

1

これは仕方のバグのように見える非パブリック・インスタンスの属性が処理されます。スフィンクスはinstance attributes defined in __init__を認識できるはずです。

これを修正する方法については言いません。関連すると思われるオープンなバグレポートがあります:Non-public instance attributes are not documented without __slots__

次の行がElementTree.pyでElementTreeクラスの定義に追加されている場合は、

__slots__ = ["_root"] 

その後、あなたが得るAttributeErrorが消えます。

+0

私にも確認されています。これが修正されたかどうか、もしあればどんなバージョン? – Rafe

+1

@Rafe:このバグはまだ解消されていません。 – mzjn

関連する問題