2012-12-09 103 views
6

比方說,我有一個這樣的類:如何用autodoc覆蓋Sphinx中的構造函數參數?

class MyClass(object): 
    """ Summary docs for my class. 

    Extended documentation for my class. 
    """ 

    def __init__(self, *args): 
     self.values = np.asarray(args) 

如果我使用獅身人面像與autodoc擴展記錄這個類,像這樣:

.. automodule:: mymodule 
    :members: 

...構造函數的簽名顯示爲MyClass(*args)。我寧願將其覆蓋並記錄爲MyClass(first, second, third)

如果這是一個函數,我可以覆蓋文檔字符串第一行中的簽名。但是這個技巧似乎不適用於類文檔字符串。那麼我怎麼能重寫構造函數簽名?

+0

隱藏來自用戶的真實呼叫簽名聽起來對我來說是一個壞主意。 –

+1

@LevLevitsky - 構造函數總是調用一定數量的參數。無論是'args'還是'arg1,arg2,...'都是一個實現細節,並且可以隨時更改。沒有「真正的」呼叫簽名 - 用戶應該通過記錄爲可接受的參數。 – detly

+0

行爲有差異(例如,過度的論點)。 –

回答

9

我認爲你最好的選擇是做這樣的事情:

.. automodule:: mymodule 
    :members: 
    :exclude-members: MyClass 

    .. autoclass:: MyClass(first, second, third) 

MyClass將覆蓋PARAMS和mymodule其他成員將被autodocumented。 您需要使用:exclude-members:排除MyClass,因爲它將包含兩次。 我認爲這是目前最簡單的解決方案。

+1

我使用'.. automodule :: mymodule \ n:members:'技術。 – detly

+0

我已經更新了我的答案。 – prmtl

+0

最後能夠嘗試一下,它完美的作品。 – detly