gpt4 book ai didi

python - 如何让狮身人面像识别装饰过的 python 函数

转载 作者:行者123 更新时间:2023-12-05 07:44:35 25 4
gpt4 key购买 nike

Sphinx 不记录用装饰器包装的函数。我尝试过使用类样式装饰器和函数样式装饰器但无济于事。这些函数不会出现在我生成的 html 中,而同一模块中的其他函数会出现

唯一半成功的 hack 是用 decorator 装饰器包装我的类装饰器,但这不会在类中使用 __call__ 函数,我需要从装饰器

import decorator
import functools

@decorator.decorator
def MyDecoratorA(fn, *args, **kwargs):
# do things
return fn(*args, **kwargs)

def MyDecoratorB(fn):

@functools.wraps(fn)
def inner(*args, **kwargs):
# do things
return fn(*args, **kwargs)
return inner


@MyDecoratorA
def TestA(a, b=None):
"""This is a doc

:param a: variable b
:type a: int
:param b: variable b
:type b: list
:returns: None
"""
pass

@MyDecoratorB
def TestB(a, b=None):
"""This is a doc

:param a: variable b
:type a: int
:param b: variable b
:type b: list
:returns: None
"""
pass

然后我有一个运行的批处理文件

sphinx-apidoc -f -l -M -T -o /tmp/source/testfunctions ${DIR}/modules/testfunctions/ 1>/dev/null
make html

这会生成一个名为 testfunctions.rst 的文件,其中包含 testfunctions 文件夹中每个模块的部分

testfunctions.cluster module
----------------------------

.. automodule:: testfunctions.cluster
:members:
:undoc-members:
:show-inheritance:

最佳答案

这是 documented in sphinx manual :

Note

If you document decorated functions or methods, keep in mind that autodoc retrieves its docstrings by importing the module and inspecting the doc attribute of the given function or method. That means that if a decorator replaces the decorated function with another, it must copy the original doc to the new function. From Python 2.5, functools.wraps() can be used to create well-behaved decorating functions.

关于python - 如何让狮身人面像识别装饰过的 python 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42762935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com