装饰器的类型注释

2023-11-24

这不是一个大问题,但我只是想知道解决这个问题的方法。 由于我刚开始在Python上使用函数注释,所以我不熟悉它。我有一个问题如下。

当你制作一个装饰器并想在其上添加注释时,你该怎么做?

例如,如下代码。

def decorator(func: Callable[[*args,**kwargs], <what type should be here?>]) -> <??>:
    def new_func(*args, **kwargs):
        return func(*args, **kwargs)
    return new_func

注意PEP 612(在Python 3.10中实现)引入ParamSpec,它可以像这样解决你的问题:

from typing import Callable, TypeVar, ParamSpec

T = TypeVar('T')
P = ParamSpec('P')

def decorator(func: Callable[P, T]) -> Callable[P, T]:
    def new_func(*args: P.args, **kwargs: P.kwargs) -> T:
        return func(*args, **kwargs)
    return new_func
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

装饰器的类型注释 的相关文章

随机推荐

  • 扫描仪仅读取第一个单词而不是行

    在我当前的程序中 一种方法要求用户输入产品的描述作为String输入 但是 当我稍后尝试打印此信息时 只有该信息的第一个单词String显示 这可能是什么原因造成的 我的方法如下 void setDescription Product aP
  • 如何覆盖嵌套的 NPM 依赖项版本?

    我想使用grunt contrib jasmineNPM 包 它有各种依赖关系 部分依赖关系图如下所示 email protected email protected email protected 不幸的是 这个版本有一个错误phanto
  • SciKit-Learn 标签编码器导致错误“参数必须是字符串或数字”

    我有点困惑 在这里创建一个 ML 模型 我正处于尝试从 大 数据帧 180 列 中获取分类特征并对其进行单热处理的步骤 以便我可以找到特征之间的相关性并选择 最佳 特征 这是我的代码 import labelencoder from skl
  • 在python中使用beautifulsoup解析html时<>更改为<和>

    使用 Beautifulsoup 处理 html 时 被转换为 lt and gt 由于标签锚全部转换 整个汤失去了结构 有什么建议吗 Setting formatter None可能有帮助 http www crummy com soft
  • 窗口加载和 WPF

    我在 Windows 2012 中有一个 WPF 项目 我需要在 Window Loaded 事件中加载一些信息 不过 我需要在视图模型中而不是在代码隐藏中执行此操作 我正在尝试使用以下代码 在我的 xaml 中
  • Visual Studio添加与dll同名的可执行文件

    在 Visual Studio 2008 中 我添加了 WinScp dll 在项目根目录中 作为引用 并且立即出现了一个黄色图标 在编译时 找不到类型或命名空间名称 WinSCP 是否缺少 using 指令或程序集引用 已解决的文件图像错
  • AVPlayerItem 失败,并显示 AVStatusFailed 和错误代码“无法解码”

    我遇到了一个奇怪的问题 希望有人能帮忙 在我的 iOS 应用程序中 我使用以下命令创建带有自定义配乐的视频MutableComposition通过组合用户照片库中的视频和应用程序包中的音频文件 然后我用一个AVPlayer and AVPl
  • 使用 NLog 记录波斯语消息

    在我的 ASP NET MVC 项目中 我在 Web config 中有以下配置
  • Android 工具栏后退箭头,带有 WhatsApp 等图标

    如何在 Android 工具栏中显示带后退箭头的图标 如 WhatsApp 我使用下面的代码在工具栏中设置后退箭头和图标 toolbar Toolbar findViewById R id toolbar setSupportActionB
  • JQuery Ajax 在 url 中添加哈希

    我这里有使用 struts2 jquery 插件的代码 h4 Choose A task h4 ul ul
  • Pandas:与之前值的差异

    给定一个看起来像这样的 Pandas 数据框 GROUP VALUE MASK 1 5 false 2 10 false 2 20 false 1 7 true 3 17 false 3 18 false 1 100 false 1 200
  • Ktor - 静态内容路由

    我很想更好地了解 Ktor 如何处理静态内容的路由 我的静态文件夹 工作目录 中有以下层次结构 static index html some files static css directory js directory some file
  • 如何创建和访问会话.net core api?

    我需要在 api 中创建并访问会话 例如 我有一个名为 Login Profile 的 api 当登录 api 被调用时 我需要创建会话 并且我需要访问配置文件 api 中的会话 当会话被清除时 登录和配置文件 api 不允许用户访问 怎么
  • 检查 Swift 字典是否不包含任何值?

    所以我正在制作一个待办事项列表应用程序 我希望用户在所有购物项目都被删除时收到通知 我有一个字典 其中包含 String store 作为键和 String items 作为值 有没有一种快速方法来检查所有项目的数组是否为空 有一个简单的方
  • Android Drawable 内存泄漏

    我使用几个大型绘图 但不知道如何管理内存泄漏 我跟踪了应用程序的堆大小 它不会停止增长 与分配的内存一样 尤其是 字节数组 byte 类型 它只会增长且永不减少 在 Eclipse 上的 DDMS 堆视图中 我的应用程序由一个使用片段的活动
  • 如何从正在运行的 QThread 向启动它的 PyQt Gui 发送信号?

    我试图了解如何使用从 Qthread 发送回启动的 Gui 界面的信号 设置 我有一个进程 模拟 需要几乎无限期地运行 或至少运行很长一段时间 在运行时 它会执行各种计算 并且某些结果必须发送回GUI 它将实时适当地显示它们 我使用 PyQ
  • 如何使 Qt Creator 的调试器在 OS X 中显示 C++ 矢量的内容?

    我正在编写一个广泛使用向量的程序 并且是第一次在 Mac OS X 10 6 6 上使用 Qt Creator 2 0 1 进行开发 当我调试时 我可以在Locals and Watchers窗口 但是一旦我去扩展一个向量 在这种情况下类型
  • 了解MyISAM记录结构

    我试图了解 MyISAM 如何物理存储其记录以及在记录插入和删除记录后如何维护其结构 我已阅读以下链接 MyISAM 动态数据文件布局 MyISAM记录结构 我想确认一下我的理解是否正确 如果不对请指正 固定大小的记录 删除标记决定记录是否
  • 枚举和枚举的区别

    枚举有valueOf string 获取枚举常量的方法和中存在的相同类型的方法java lang Enum有名字的类valueOf enumClassName string 我发现两者都给出相同的输出 那还有什么其他的区别呢 如果没有区别那
  • 装饰器的类型注释

    这不是一个大问题 但我只是想知道解决这个问题的方法 由于我刚开始在Python上使用函数注释 所以我不熟悉它 我有一个问题如下 当你制作一个装饰器并想在其上添加注释时 你该怎么做 例如 如下代码 def decorator func Cal