gpt4 book ai didi

python - 让 Sphinx 替换文档字符串文本

转载 作者:太空狗 更新时间:2023-10-30 00:57:05 26 4
gpt4 key购买 nike

我在 Sphinx 中记录类似于下面的代码:

class ParentClass(object):

def __init__(self):
pass

def generic_fun(self):
"""Call this function using /run/ParentClass/generic_fun()"""
do_stuff()

class ChildClass(ParentClass):

def specific_fun(self):
"""Call this function using /run/ChildClass/specific_fun()"""
do_other_stuff()

我将 :inherited-members 添加到 ChildClass 文档中,因此我在其中有诸如“使用/run/ParentClass/generic_fun() 调用此函数”之类的语句.

有没有一种方法可以在文档字符串中放入诸如 之类的东西,Sphinx 将用它记录的实际类替换它?

我希望代码看起来像这样:

class ParentClass(object):

def __init__(self):
pass

def generic_fun(self):
"""Call this function using /run/<class_name>/generic_fun()"""
do_stuff()

因此在 ChildClass 部分,Sphinx 文档将显示为“(...) 使用/run/ChildClass/generic_fun()(...)”,而 ParentClass 部分将显示为“(...) 使用/run/ParentClass/generic_fun()(...)"?

理想情况下,我希望将文档放在同一页上,因此不同部分的替换字符串会有所不同。

最佳答案

我在查看其他内容时想出了一种方法来执行此操作。

autodoc 在打印消息之前会调用一些函数。我将此代码添加到我的 conf.py 文件中:

def get_class_name(full_module_name):
"""
Pull out the class name from the full_module_name
"""
#split the full_module_name by "."'s
return full_module_name.split('.')[-1]

def process_docstring(app, what, name, obj, options, lines):
classname = get_class_name(name)

# loop through each line in the docstring and replace |class| with
# the classname
for i in xrange(len(lines)):
lines[i] = lines[i].replace('|class|', classname)

def setup(app):
app.connect('autodoc-process-docstring', process_docstring)

我想使用 | token ,但它们保留用于全局替换。我通过将以下行放在我的第一个文件中来解决这个问题(所以代码用 |class| 代替 |class|):

.. |class| replace:: `|class|`

关于python - 让 Sphinx 替换文档字符串文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11697634/

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