Sphinx - 从父方法插入参数文档

2023-11-22

我有一些相互继承的类。所有类都包含相同的方法(让我们称之为mymethod),子级由此覆盖基类方法。我想生成一个文档mymethod在所有班级中使用sphinx.

Suppose mymethod接受争论myargument。此参数对于基方法和继承方法具有相同的类型和含义。为了尽量减少冗余,我想编写文档myargument仅适用于基类和insert子方法文档中的文档。也就是说,我不想只放置对基类的简单引用,而是在生成文档时动态插入文本。

这可以做到吗?如何?

下面请找到一些说明问题的代码。

class BaseClass
    def mymethod(myargument):
        """This does something

        Params
        ------
        myargument : int
            Description of the argument

        """
        [...]


class MyClass1(BaseClass):
    def mymethod(myargument):
        """This does something

        Params
        ------
        [here I would like to insert in the description of ``myargument`` from ``BaseClass.mymethod``]
        """

        BaseClass.mymethod(myargument)
        [...]

class MyClass2(BaseClass):
    def mymethod(myargument, argument2):
        """This does something

        Params
        ------
        [here I would like to insert in the description of ``myargument`` in ``BaseClass.mymethod``]
        argument2 : int
            Description of the additional argument

        """

        BaseClass.mymethod(argument)
        [...]



可能并不理想,但也许您可以使用装饰器来扩展文档字符串。例如:

class extend_docstring:
    def __init__(self, method):
        self.doc = method.__doc__

    def __call__(self, function):
        if self.doc is not None:
            doc = function.__doc__
            function.__doc__ = self.doc
            if doc is not None:
                function.__doc__ += doc
        return function


class BaseClass:
    def mymethod(myargument):
        """This does something

        Params
        ------
        myargument : int
            Description of the argument
        """
        [...]


class MyClass1(BaseClass):
    @extend_docstring(BaseClass.mymethod)
    def mymethod(myargument):
        BaseClass.mymethod(myargument)
        [...]

class MyClass2(BaseClass):
    @extend_docstring(MyClass1.mymethod)
    def mymethod(myargument, argument2):
        """argument2 : int
            Description of the additional argument
        """

        BaseClass.mymethod(argument)
        [...]


print('---BaseClass.mymethod---')
print(BaseClass.mymethod.__doc__)
print('---MyClass1.mymethod---')
print(MyClass1.mymethod.__doc__)
print('---MyClass2.mymethod---')
print(MyClass2.mymethod.__doc__)

Result:

---BaseClass.mymethod---
This does something

        Params
        ------
        myargument : int
            Description of the argument

---MyClass1.mymethod---
This does something

        Params
        ------
        myargument : int
            Description of the argument

---MyClass2.mymethod---
This does something

        Params
        ------
        myargument : int
            Description of the argument
        argument2 : int
            Description of the additional argument

如果您将装饰器设为描述符并在其中搜索它,则可以动态解析覆盖方法__get__但这意味着装饰器不再可堆叠,因为它不返回真正的函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sphinx - 从父方法插入参数文档 的相关文章

  • 下载 PyQt6 的 Qt Designer 并使用 pyuic6 将 .ui 文件转换为 .py 文件

    如何下载 PyQt6 的 QtDesigner 如果没有适用于 PyQt6 的 QtDesigner 我也可以使用 PyQt5 的 QtDesigner 但是如何将此 ui 文件转换为使用 PyQt6 库而不是 PyQt5 的 py 文件
  • Django REST序列化器:创建对象而不保存

    我已经开始使用 Django REST 框架 我想做的是使用一些 JSON 发布请求 从中创建一个 Django 模型对象 然后使用该对象而不保存它 我的 Django 模型称为 SearchRequest 我所拥有的是 api view
  • 如何在python中读取多个文件中的文本

    我的文件夹中有许多文本文件 大约有 3000 个文件 每个文件中第 193 行是唯一包含重要信息的行 我如何使用 python 将所有这些文件读入 1 个文本文件 os 模块中有一个名为 list dir 的函数 该函数返回给定目录中所有文
  • 将字符串转换为带有毫秒和时区的日期时间 - Python

    我有以下 python 片段 from datetime import datetime timestamp 05 Jan 2015 17 47 59 000 0800 datetime object datetime strptime t
  • Pycharm Python 控制台不打印输出

    我有一个从 Pycharm python 控制台调用的函数 但没有显示输出 In 2 def problem1 6 for i in range 1 101 2 print i end In 3 problem1 6 In 4 另一方面 像
  • Flask 和 uWSGI - 无法加载应用程序 0 (mountpoint='')(找不到可调用或导入错误)

    当我尝试使用 uWSGI 启动 Flask 时 出现以下错误 我是这样开始的 gt cd gt root localhost uwsgi socket 127 0 0 1 6000 file path to folder run py ca
  • 如何等到 Excel 计算公式后再继续 win32com

    我有一个 win32com Python 脚本 它将多个 Excel 文件合并到电子表格中并将其另存为 PDF 现在的工作原理是输出几乎都是 NAME 因为文件是在计算 Excel 文件内容之前输出的 这可能需要一分钟 如何强制工作簿计算值
  • 如何使用 Scrapy 从网站获取所有纯文本?

    我希望在 HTML 呈现后 可以从网站上看到所有文本 我正在使用 Scrapy 框架使用 Python 工作 和xpath body text 我能够获取它 但是带有 HTML 标签 而且我只想要文本 有什么解决办法吗 最简单的选择是ext
  • 安装后 Anaconda 提示损坏

    我刚刚安装张量流GPU创建单独的后环境按照以下指示here https github com antoniosehk keras tensorflow windows installation 但是 安装后当我关闭提示窗口并打开新航站楼弹出
  • NameError:名称“urllib”未定义”

    CODE import networkx as net from urllib request import urlopen def read lj friends g name fetch the friend list from Liv
  • feedparser 在脚本运行期间失败,但无法在交互式 python 控制台中重现

    当我运行 eclipse 或在 iPython 中运行脚本时 它失败了 ascii codec can t decode byte 0xe2 in position 32 ordinal not in range 128 我不知道为什么 但
  • Abaqus 将曲面转化为集合

    我一直试图在模型中找到两个表面的中心 参见照片 但未能成功 它们是元素表面 面 查询中没有选项可以查找元素表面的中心 只能查找元素集的中心 找到节点集的中心也很好 但是我的节点集没有出现在工具 gt 查询 gt 质量属性选项中 而且我找不到
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • 从 pygame 获取 numpy 数组

    我想通过 python 访问我的网络摄像头 不幸的是 由于网络摄像头的原因 openCV 无法工作 Pygame camera 使用以下代码就像魅力一样 from pygame import camera display camera in
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • 如何从没有结尾的管道中读取 python 中的 stdin

    当管道来自 打开 时 不知道正确的名称 我无法从 python 中的标准输入或管道读取数据 文件 我有作为例子管道测试 py import sys import time k 0 try for line in sys stdin k k
  • 在 Pandas DataFrame Python 中添加新列[重复]

    这个问题在这里已经有答案了 例如 我在 Pandas 中有数据框 Col1 Col2 A 1 B 2 C 3 现在 如果我想再添加一个名为 Col3 的列 并且该值基于 Col2 式中 如果Col2 gt 1 则Col3为0 否则为1 所以
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data

随机推荐

  • C# 为什么“Flush”不强制字节流到网络流中?

    我有一个项目 我试图将序列化对象发送到服务器 然后等待 OK 或 ERROR 消息返回 我似乎遇到了与海报类似的问题 TcpClient发送 关闭问题 问题是 我似乎能够发送原始对象的唯一方法是关闭连接 但是 当然 我迫不及待地想看看服务器
  • 属性装饰器的 setter 方法没有被调用

    我试图使用属性方法来设置类实例的状态 具有以下类定义 class Result def init self x None y None self x float x self y float y self visible False sel
  • 在 jQuery 中获取图像的原始宽度和高度

    我需要获取给定特定来源的图像的原始宽度和高度 我目前的方法是 img tag img style display none src img Owidth 0 img Oheight 0 img tag load function img O
  • 如何将 C# 值向上舍入到最接近的整数?

    我想将 double 舍入为 int Eg double a 0 4 b 0 5 我想将它们都更改为整数 so that int aa 0 bb 1 aa来自a and bb来自b 有什么公式可以做到这一点吗 Use Math Ceilin
  • 如何停止 Android 垃圾收集器?是否可以?

    有什么办法可以让垃圾收集器停止一段时间吗 不被 GC 滞后的最好方法是避免一直收集垃圾 例如 您可以重用对象 而不是清空它们并创建新对象 这与 androids CursorAdapter 在重用视图时所做的模式完全相同 它只是重用视图来表
  • 为什么 MediaPlayer 在创建它的实例时抛出 NOT Present 错误?

    创建 MediaPlayer LogCat 实例时显示此错误 QCMediaPlayer 媒体播放器不存在 为什么会这样 这正常吗 Sample package com example testapp import android app
  • 浮动大小 (3.0) 与 (3.0f)

    sizeof 3 0 和 sizeof 3 0f 有什么区别 我期望他们都给出相同的结果 sizeof float 但它不同 在32位机上 gcc编译器 大小 3 0f gt 4 大小 3 0 gt 8 Why so 因为3 0是双倍的 看
  • 短暂隐藏 ActionBar 而不调整 Activity 大小

    我正在使用 ViewPager 在不同片段之间滚动 有两种类型的片段 使用两种不同的菜单资源 我将在必要时使菜单无效以在这些资源之间进行切换 这一切都工作得很好 但是菜单是 重绘 的 没有动画 为了避免弄乱各个菜单项 我希望在加载新菜单时可
  • 用于多行文本框的 ASP 正则表达式验证器

    我需要验证文本框输入的长度 最大长度属性不适用于多行文本框 我的正则表达式是
  • dart:web_gl: 渲染警告:绑定到纹理单元 0 的纹理不可渲染

    我收到错误 WebGLRenderingContext RENDER WARNING texture bound to texture unit 0 is not renderable It maybe non power of 2 and
  • 当Android中的用户禁用GPS时如何收到通知?

    我正在创建一个使用 GPS 的应用程序 第一次在onCreate 我正在检查 GPS 是否启用 如果未启用 那么我会将用户发送到设置菜单以将 GPS 设置为启用 一旦 GPS 启用 我就开始执行我的工作 但是 如果用户在通知管理器上停止 G
  • 使用通用图像加载器在 GridView 中加载图像

    我正在使用通用图像加载器 1 8 6用于动态加载从网络获取的图像的库 The ImageLoaderConfiguration配置如下 ImageLoaderConfiguration config new ImageLoaderConfi
  • 如何在 qnx 上安装 ssh 服务器?

    我正在使用 qnx 设备 并且我希望能够通过 ssh 进入它 有人有关于启动和运行 openSSH 之类的入门知识吗 如果你想启动一个SSH服务器来轻松传输文件 SSH 守护程序 sshd 已安装 但缺少 配置 创建密钥 不要使用密码 ra
  • COM 对象 C# 将 MMDeviceEnumerator 转换为 IMMDeviceEnumerator InvalidCastException

    我没有 COM 导入方面的经验 只是使用其他人的代码 但这些代码不适合我 抛出 InvalidCastException 的代码行 IMMDeviceEnumerator deviceEnumerator IMMDeviceEnumerat
  • 我们可以将光标设置为会话变量吗?

    我尝试将光标设置为会话变量 看起来它不起作用 有人对此有想法吗 My Code Meteor call apiresult function e result console log result Session set object re
  • 如何确保在 Android 中发送短信

    在我的应用程序中 将在执行操作时发送一条通知短信 现在我如何确保短信会被发送 例如 如果没有网络或没有拔出SIM卡 如何保证稍后有网络可用时仍能发送短信 是否可以将短信添加到队列中 这可能吗 提前致谢 佩鲁马尔 您可以使用广播接收器捕获短信
  • 在 perl 中使用 -d 测试运算符

    我正在查看某人的旧代码 我发现了这样的声明 tmpStr some file location if d tmpStr printf 1 else printf 2 我很困惑什么 d有 有帮助吗 d如果后面的字符串是目录 则返回 true
  • 记录对 http.HandleFunc 内传入 HTTP 请求的响应

    这是一个后续问题在go中 如何检查写入http ResponseWriter的http响应 因为那里的解决方案需要伪造请求 这对于单元测试非常有用 但不适用于实时服务器 我想将我的 Web 服务为响应从用户收到的请求而返回的 HTTP 响应
  • 从后台线程结果更新 Winforms UI

    这可能是一个愚蠢的问题 但我在 stackoverflow 上找不到答案 我在 Winform 应用程序中有一个按钮单击事件 该应用程序运行一个线程来计算要在表单中显示的结果 当线程计算出结果后 如何更新 Forms UI private
  • Sphinx - 从父方法插入参数文档

    我有一些相互继承的类 所有类都包含相同的方法 让我们称之为mymethod 子级由此覆盖基类方法 我想生成一个文档mymethod在所有班级中使用sphinx Suppose mymethod接受争论myargument 此参数对于基方法和