2012-06-26 15 views
5

De acuerdo con sphinx documentation, la directiva .. autoattribute debe ser capaz de documentar atributos de instancia. Sin embargo, si lo hago ::autoclase y atributos de instancia

.. currentmodule:: xml.etree.ElementTree 

.. autoclass:: ElementTree 

    .. autoattribute:: ElementTree._root 

Luego, cuando la construcción consigo un AttributeError:

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 

a pesar de que si instanciar ElementTree y trato y acceso al atributo de _root, funciona bien ::

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

¿Qué estoy haciendo mal?

(en realidad estoy teniendo este problema con uno de mis propias clases, pero sólo estoy utilizando la clase elementtree como ejemplo ya que está en la biblioteca estándar)

Respuesta

1

Esto parece un error en la forma no los atributos de instancia pública son manejados. Se supone que Sphinx puede reconocer instance attributes defined in __init__.

No puedo decir cómo se debe solucionar esto. Hay un informe de error abierto que parece estar relacionado: Non-public instance attributes are not documented without __slots__.

Si se añade la siguiente línea a la definición de la clase ElementTree en ElementTree.py,

__slots__ = ["_root"] 

entonces el AttributeError que se obtiene desaparece.

+0

Confirmado para mí también. Alguna idea de si esto fue corregido y, si es así, ¿qué versión? – Rafe

+1

@Rafe: El error aún no se ha resuelto. – mzjn

Cuestiones relacionadas