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

如何使用pdoc在API文档中排除装饰器?

使用pdoc生成API文档时排除装饰器的方法

方法1:用pdoc.doc装饰器指定显示签名

pdoc自带的@doc装饰器可以手动覆盖函数的显示签名,直接跳过原装饰器带来的无关参数。示例代码:

from pdoc import doc
from xlwings import xl_func

@xl_func("blah", "blah")
@doc(signature="examples_are_blah()")
def examples_are_blah():
    """这是函数的文档说明"""
    pass

生成文档时,会直接使用你指定的签名,原xl_func的参数不会出现在文档里。

方法2:自定义pdoc渲染模板过滤装饰器

通过修改pdoc的模板文件,过滤掉特定装饰器的显示:

  1. 复制pdoc默认模板中的function.html.jinja2到你的项目目录(默认模板路径在pdoc安装目录的templates文件夹下)
  2. 修改模板中处理装饰器的代码,添加判断跳过xl_func:
{% for deco in function.decorators %}
    {% if not deco.startswith('@xl_func') %}
        {{ deco }}
    {% endif %}
{% endfor %}
  1. 运行pdoc时指定自定义模板目录:
pdoc --template-dir ./your-template-folder your-module.py

方法3:用包装装饰器隐藏原装饰器痕迹

写一个简单的包装装饰器,保留原函数的元信息,让pdoc忽略xl_func的存在:

from xlwings import xl_func

def hide_xl_func(*args, **kwargs):
    def wrapper(func):
        decorated = xl_func(*args, **kwargs)(func)
        # 保留原函数的文档和名称
        decorated.__doc__ = func.__doc__
        decorated.__name__ = func.__name__
        # 绑定原函数到__wrapped__属性,让pdoc识别原函数
        decorated.__wrapped__ = func
        return decorated
    return wrapper

@hide_xl_func("blah", "blah")
def examples_are_blah():
    """这是函数的文档说明"""
    pass

这样pdoc会优先读取原函数的信息,不会显示xl_func的装饰器参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 03:47:02