编程语言
首页 > 编程语言> > 使用带有哨兵对象默认参数的Sphinx python方法进行文档记录?

使用带有哨兵对象默认参数的Sphinx python方法进行文档记录?

作者:互联网

如果要允许人们使用“无”调用某些方法,则在定义方法时必须使用sentinel object.

 _sentinel = object()
 def foo(param1=_sentinel):
     ...

这将使您能够调用foo(param1 = None)并能够在类似foo()的调用之间进行区分.

问题是,当Sphinx确实记录了该方法时,它将编写如下内容

mymodule.foo(param1=<object object at 0x108c1a520>)

如何说服Sphinx为这些功能提供用户友好的输出?

注意,想象一下如果使用哨兵方法有3-4个参数,文档的外观.

解决方法:

我认为,只要您有一个在函数外部创建对象的标记,就不可能说服Sphinx更“友好”. Sphinx的autodoc扩展名imports the module,这意味着将执行模块级代码.

您确定不能使用类似这样的东西吗?

def foo(param1=None):
    if param1 == None:
        param1 = whatever you want...
    else:
         ... 

标签:default-parameters,python,python-sphinx
来源: https://codeday.me/bug/20191011/1889091.html