覆盖车博士对狮身人面像函数声明(Override function declaration in a

2019-06-17 20:15发布

我有一个是这样的一个模块:

#!/usr/bin/env python

#: Documentation here.
#: blah blah blah
foobar = r'Some really long regex here.'

def myfunc(val=foobar):
    '''Blah blah blah'''
    pass

......我有一个.rst即是这样的文件:

:mod:`my_module` Module
-----------------------

..automodule:: my_module
    :members:
    :private-members:
    :show-inheritance:

当我建立的文件,我得到与该是这样的一个片断一个HTML文件:

mymodule.foobar。 foob​​ar的 =“有些荒谬长的和丑陋的正则表达式在这里”

这里额外的文档

MyModule的。 MYFUNC(VAL =“有些荒谬长的和丑陋的正则表达式这里”)

等等等等等等

在此基础上计算器后 ,我想我可以通过改变我的模块来改变它:

#!/usr/bin/env python

#: .. data:: my_module.foobar
#: Extra documentation here
foobar = 'Some really long regex here.'

def myfunc(val=foobar):
    '''.. function:: my_module.myfunc(val=foobar)

    Blah blah blah'''
    pass

......但没有做的伎俩,只是附加我的下一个丑作为身体的一部分想要的签名。 有谁知道我怎样才能正确地重写此?

(我使用的狮身人面像V1.1.3,顺便说一句。)

Answer 1:

您有被用作函数中的关键字参数的默认值的模块级变量。 斯芬克斯显示函数签名该变量的值(而不是名称)。 这个问题在讨论另一个问题 ,和OP也提出一个问题,门票在GitHub上了。

但是,您可以解决这两种方式:

  1. 通过覆盖在.rst文件中的签名autofunction ,如解释的答案的链接的问题。

  2. 如果文档字符串的第一行看起来像一个签名,并且如果autodoc_docstring_signature配置变量被设置为True (它是通过缺省值),然后斯芬克斯将使用该线作为签名。

    所以,如果你有一个文档字符串(如下所示),

     def myfunc(val=foobar): '''myfunc(val=foobar) Blah blah blah''' pass 

    它应该在你希望的方式工作。

    在的问题,你在文档字符串这个第一行:

     .. function:: my_module.myfunc(val=foobar) 

    这不工作,因为它看起来并不像一个适当的签名。



文章来源: Override function declaration in autodoc for sphinx