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