2013-03-16 77 views
0

使用sphinx autodoc擴展名創建文檔時如何將類實例(不是類本身)記錄爲函數?類定義了一個__call__方法。將類實例記錄爲函數

回答

1

有可能使用的獅身人面像的擴展來解決這個問題。對我來說,以下是足夠:

  1. conf.py

    1. 添加適當的路徑sys.pathconf.py
    2. extensions列表
  2. 與新的模塊名稱替換sphinx.ext.autodoc新模塊:

    1. 進口sphinx.ext.autodoc
    2. 創建的.autodoc.FunctionDocumenter
    3. 一個子類創建setup(app)函數調用.autodoc.setup(),然後調用app.add_autodocumenter(SubclassName)

注意,這將取代文檔管理器功能,因此您需要使它對他們有用。通過定義objtype類常量和唯一的字符串作爲值可以避免該問題,但這需要更多的工作。關心常規功能更容易。如果有人感興趣,代碼是here

+1

然而,當使用'sphinx.ext.autosummary'時要小心:自Sphinx 1.2.1以來,它[覆蓋自定義文檔](https://github.com/sphinx-doc/sphinx/commit/574a796)與默認的。一種解決方案是將文檔設置爲「env-before-read-docs」事件,該事件在自動摘要覆蓋後調用。一個例子可以看到[這裏](https://github.com/F30/salt/blob/autodoc-fix/doc/_ext/saltautodoc.py)。 – F30 2016-09-07 11:42:20

0

我不熟悉autodoc特別,但你可以試試這個:

class MyClass(object): 
    ... 
    def __call__(self): 
     ... 

c = MyClass() 
""" 
this is a function-like object. 
""" 

c2 = MyClass() 
""" 
this is another function-like object. 
""" 

或者這樣:

#: this is a function-like object. 
c = MyClass() 
+0

它產生的東西像'powerline.segments.vim.repository_status = '。附加的文檔是正確的,但它應該產生'(* args,** kwargs)',而不是'= '。 – ZyX 2013-03-16 21:04:24

+0

已經嘗試了第二個變體。它有同樣的問題。 – ZyX 2013-03-16 21:05:10