使用带有哨兵对象默认参数的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