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

如何让mkdocstrings自动渲染仅继承ParentClass的Python类文档?

当然可以,给你几个可行方案:

方案1:用mkdocstrings自带的过滤器

mkdocstrings的Python处理器支持通过filters参数筛选对象,直接用继承关系过滤就行。

在mkdocs.yml里这么配置:

plugins:
  - mkdocstrings:
      default_handler: python
      handlers:
        python:
          options:
            filters:
              - "parent::my_package.features.mixins.ParentClass"

这个规则会自动只渲染直接或间接继承自ParentClass的类,不用手动一个个挑。

方案2:手动指定要渲染的子类

如果子类数量不多,直接在markdown文档里逐个写要渲染的类路径更省心,跳过那些不相关的:

# 子类文档

## ChildClass1
::: my_package.features.childclass1.ChildClass1

## ChildClass2
::: my_package.features.childclass2.ChildClass2

这种方式直观,也不容易出错。

方案3:自定义处理器扩展

要是前两种都满足不了你的需求,比如需要更复杂的判断逻辑,那就自己写个mkdocstrings的自定义处理器。核心就是在收集类信息的时候,用代码判断类是否继承自ParentClass,过滤掉不符合的。

举个简单的例子,自定义处理器的核心逻辑:

from mkdocstrings_handlers.python.handler import PythonHandler

class CustomPythonHandler(PythonHandler):
    def collect(self, identifier, config):
        collected_data = super().collect(identifier, config)
        # 只留继承自ParentClass的类
        filtered_classes = []
        for cls in collected_data.get("classes", []):
            for base in cls.get("bases", []):
                if base["full_name"] == "my_package.features.mixins.ParentClass":
                    filtered_classes.append(cls)
                    break
        collected_data["classes"] = filtered_classes
        return collected_data

写完后在mkdocs.yml里配置使用这个自定义处理器就行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 04:44:56