如果您希望能够允许人们使用None
调用某些方法,您必须使用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 的自动文档扩展 imports the module ,这意味着执行模块级代码。
你确定你不能使用这样的东西吗?
def foo(param1=None):
if param1 == None:
param1 = whatever you want...
else:
...
关于python - 使用带有哨兵对象的默认参数的 Sphinx python 方法进行记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6978328/