You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sphinx未配置:private-members:仍展示类私有属性问题排查

根因说明

这个现象和:private-members:配置没有关系,属于sphinx.ext.napoleon的默认逻辑:

  • :private-members:的作用范围是autodoc自动扫描代码提取成员的流程,控制是否自动抓取下划线开头的私有成员加入文档
  • 你在类的docstring的Attributes区块中手动编写了_private1、_private2两个私有属性的说明,napoleon解析NumPy格式docstring时,默认会完整渲染Attributes区块内的所有手写条目,不会自动过滤下划线开头的私有项,所以哪怕没开:private-members:,这两个条目也会显示出来。
可用解决方法

根据实际需求选一种即可:

  • 方法1:修改napoleon配置,自动过滤docstring区块中的私有属性
    在conf.py中添加如下配置项,让napoleon解析Attributes、Parameters等区块时自动跳过下划线开头的私有成员:
    napoleon_include_private_with_doc = False
    napoleon_include_special_with_doc = False
    
    该配置仅影响napoleon解析docstring的逻辑,不会改动autodoc本身的成员抓取规则。
  • 方法2:直接移除公开docstring中的私有属性条目
    如果私有属性不需要出现在对外文档里,把类docstring里_private1、_private2的说明删掉就行。未开启:private-members:时,autodoc不会主动从代码里抓取这两个私有属性渲染。
  • 方法3:按需控制私有成员展示
    如果有部分场景需要展示私有属性,可以保留docstring里的写法,仅在需要展示私有成员的automodule/autoclass指令中添加:private-members:选项即可。

当前复现的渲染效果:
渲染效果截图

内容的提问来源于stack exchange,提问作者LarrySnyder610

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 03:03:49