mocking - 使用模拟对象的默认参数
问题描述
我正在使用 Sphinx v1.8.5 为 Python 2 代码构建文档,这些代码具有我使用autodoc_mock_imports
. 当我尝试使用模拟对象 ( RAMP
) 作为默认参数时收到错误消息:
def foo(name, amp=RAMP):
错误说:
NameError:未定义名称“RAMP”
如果我不用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)
"""
推荐阅读
- node.js - Linkedin Like 机器人
- c# - 将 Razor 页面渲染为字符串未找到的布局
- python - 在 Xcode 11.5 中构建 kivy-ios 应用程序失败并出现 Python 语法错误
- python-3.x - 如何从用户那里获取输入并将其传递给由python中的子进程调用触发的交互式命令行程序?
- javascript - onChange 不适用于移动设备?- 反应原生
- grpc - 使用 grpc 的 2 个微服务之间的通信如何工作?
- service - 如何在 /iwfnd/maint_service 中生成系统别名?
- sql - SQL根据参数从表中排除行
- elasticsearch - Elasticsearch - 节点如何检测分片故障
- python - Seaborn 绘图未显示