2013-07-12 53 views
4

我寫了一個python類,並用sphinx做了文檔。例如,類看起來像:現在autodoc和顯式指定實例屬性的問題

class Aclass(object): 
    """ my class """ 

    def __init__(self): 
     """ constructor """ 

     self.a = None 
     """ doc for attribute a """ 

     self._prop = None 

    def _get_prop(self): 
     """ getter prop """ 
     return self._prop 

    def _set_prop(self, val): 
     """ setter prop """ 
     self._prop = val 

    prop = property(_get_prop, _set_prop) 
    """ a property """ 

    def square(self): 
     """ return square of a """ 
     return self.a**2 

,爲了做文檔,在第一個文件中我寫道:

.. autoclass:: aclass.Aclass 
    :members: 

其一切ok,並apropsquare出現在文件。

enter image description here

,但如果我嘗試separatly文件的屬性和方法,獅身人面像說,它cannont找到屬性,但它爲支柱。

.. autoattribute:: aclass.Aclass.prop 

.. autoattribute:: aclass.Aclass.a 

的錯誤信息是:

Traceback (most recent call last):                     
    File "/usr/lib/python2.7/dist-packages/sphinx/ext/autodoc.py", line 326, in import_object 
    obj = self.get_attr(obj, part) 
    File "/usr/lib/python2.7/dist-packages/sphinx/ext/autodoc.py", line 232, in get_attr 
    return safe_getattr(obj, name, *defargs) 
    File "/usr/lib/python2.7/dist-packages/sphinx/util/inspect.py", line 70, in safe_getattr 
    raise AttributeError(name) 
AttributeError: a 

/home/gvallver/dev/sphinx/doc/source/index.rst:17: WARNING: autodoc can't import/find attribute 'aclass.Aclass.a', it reported error: "a", please check your spelling and sys.path 

我讀的地方Sphinx values for attributes reported as None該斯芬克斯不isntantiate類,因此存在類屬性(如丙)和實例屬性之間的差(作爲) 。但是,我怎樣才能在文檔中引用實例屬性?

實際上,如果在第一個文件中沒有顯式詢問實例屬性,例如,這將工作:

.. autoclass:: aclass.Aclass 
    :members: 

但這並不

.. autoclass: aclass.Aclass 
    :members: a 
+0

美國洛特的解決方案圍繞提供了額外的工作,這一點:http://stackoverflow.com/questions/3959615/how-can-i-make-python-sphinx-document-object-attributes-only -declared功能於INIT – ecoe

回答

4

有關於這一個bug報告(創建2012-03-30;還開着二○一五年十二月一十二日):https://github.com/sphinx-doc/sphinx/issues/904

  1. 問題具有顯式:members:列表含有實例屬性固定在this commit(包含在斯芬克斯1.2b1)。

  2. 正如評論(來自喬恩沃爾特曼)中提到的,有一個無證的autoinstanceattribute指令。

    使用.. autoinstanceattribute:: aclass.Aclass.a確實有效(使用Sphinx 1.1.3和1.2b1進行測試)。這裏