使用模拟对象的默认参数
Default arguments using mocked objects
我正在使用 Sphinx v1.8.5 为 Python 2 代码构建文档,这些代码具有我使用 autodoc_mock_imports
模拟的外部依赖项。当我尝试使用模拟对象 (RAMP
) 作为默认参数时收到错误消息:
def foo(name, amp=RAMP):
错误说:
NameError: name 'RAMP' is not defined
如果我不使用 RAMP
作为默认参数,错误就会消失。我做错了什么?
好的,感谢@bad_coder 的评论,我意识到障碍源于模块的导入方式。我需要使用 module_defining_RAMP.RAMP
来解析范围,而不是直接访问 RAMP
.
当然,然后我在我的文档输出中得到了模拟对象的丑陋值:
foo(name, amp=<sphinx.ext.autodoc.importer._MockObject object>)
但是我在搜索自己的时候已经看到了这个问题的解决方案。我需要简单地在文档字符串中声明函数签名:
def foo(name, amp=RAMP):
"""
foo(name, amp=module_defining_RAMP.RAMP)
"""
我正在使用 Sphinx v1.8.5 为 Python 2 代码构建文档,这些代码具有我使用 autodoc_mock_imports
模拟的外部依赖项。当我尝试使用模拟对象 (RAMP
) 作为默认参数时收到错误消息:
def foo(name, amp=RAMP):
错误说:
NameError: name 'RAMP' is not defined
如果我不使用 RAMP
作为默认参数,错误就会消失。我做错了什么?
好的,感谢@bad_coder 的评论,我意识到障碍源于模块的导入方式。我需要使用 module_defining_RAMP.RAMP
来解析范围,而不是直接访问 RAMP
.
当然,然后我在我的文档输出中得到了模拟对象的丑陋值:
foo(name, amp=<sphinx.ext.autodoc.importer._MockObject object>)
但是我在搜索自己的时候已经看到了这个问题的解决方案。我需要简单地在文档字符串中声明函数签名:
def foo(name, amp=RAMP):
"""
foo(name, amp=module_defining_RAMP.RAMP)
"""