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

如何在VSCode中让Python子类Hover时显示继承的文档字符串?

问题背景与需求

我维护着一个包含抽象Django模型和Celery工作流辅助工具的基础仓库及cookiecutter,目标是标准化开发流程,让下游开发者的工作流更精简统一。我希望开发者在VSCode中操作子类模型时,不用跳转到基类,就能通过Hover功能查看从父类继承的完整文档字符串——具体来说,Hover要同时显示子类的文档简介和父类的属性章节。

尝试过的方法及问题

我用docstring-inheritance包的GoogleDocstringInheritanceMeta元类实现文档字符串继承,在IPython中测试完全符合预期:

from docstring_inheritance import GoogleDocstringInheritanceMeta
   
class Test(metaclass=GoogleDocstringInheritanceMeta):
   """This is test 1.
   
       Attributes:
           test 1
   """

class Result(Test):
    """This is test 2."""

Result.__doc__
# 输出:'This is test 2.\n\nAttributes:\n    test 1'

但在VSCode中,Hover子类时只能看到子类自身的文档字符串,完全不显示从父类继承的属性部分。

可行解决方案

1. 切换VSCode的Python语言服务器到Jedi

VSCode默认的Pylance语言服务器是静态分析模式,不会执行元类代码来获取运行时动态生成的__doc__属性,所以看不到继承后的完整文档。而Jedi语言服务器会执行部分代码逻辑来获取运行时信息,能正确识别docstring-inheritance生成的继承文档。

操作步骤:

  • 打开VSCode设置(快捷键Ctrl+,)
  • 搜索Python: Language Server选项
  • 将默认的Pylance切换为Jedi
  • 重启VSCode后,再测试Hover功能即可看到完整的继承文档

2. 预生成静态文档字符串(适配Pylance场景)

如果必须使用Pylance(比如依赖其强大的类型检查能力),可以在开发阶段预先生成包含继承内容的静态文档字符串:

  • 编写一个脚本,遍历项目中所有需要继承文档的子类
  • 利用docstring-inheritance的逻辑,提前合并父类和子类的文档字符串,并直接写入子类的__doc__定义中
  • 这样Pylance的静态分析就能直接读取到完整的文档内容

这种方式需要维护脚本,但能兼顾Pylance的特性和文档继承需求。

内容的提问来源于stack exchange,提问作者Ttal.p

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 07:36:27