如何让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_
相关产品推荐
相关产品推荐

