Python 类型提示 可使用一种已知位置类型调用,然后使用 *args 和 **kwargs

2023-12-05

我下面的功能foo, 其中有:

  • 具有已知类型的一个位置 arg
  • 之后有可变数量的位置参数和关键字参数
from typing import Callable

def foo(bar: str, *args, **kwargs) -> None:
    """Some function with one positional arg and then *args and **kwargs."""

foo_: Callable[[str, ...], None] = foo  # error: Unexpected '...'

我如何输入提示?

现在,mypy==0.812抛出错误:error: Unexpected '...' [misc]


我可能会为此使用协议。它们通常比 Callables 更灵活一些。它看起来像这样

from typing import Protocol

class BarFunc(Protocol):
    def __call__(fakeself, bar: str, *args, **kwargs) -> None:
        # fakeself gets swallowed by the class method binding logic
        # so this will match functions that have bar and the free arguments.
        ...

def foo(bar: str, *args, **kwargs) -> None:
    """Some function with one positional arg and then *args and **kwargs."""

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

Python 类型提示 可使用一种已知位置类型调用,然后使用 *args 和 **kwargs 的相关文章

随机推荐

  • NSOperation 和 NSURLConnection 令人困惑

    我正在尝试使用 NSOperation 和 NSOperationQueue 从某个服务器下载多个图像 我的主要问题是下面的代码片段和这个链接有什么区别http www dribin org dave blog archives 2009
  • Sqlite:CURRENT_TIMESTAMP是GMT,而不是机器的时区

    我有一个带有此列定义的 sqlite v3 表 timestamp DATETIME DEFAULT CURRENT TIMESTAMP 该数据库所在的服务器位于 CST 时区 当我插入表而不包含时间戳列时 sqlite 会自动使用 GMT
  • 使用 mmap 保留地址空间的开销

    我有一个程序 通常使用大量数组 其中内存是使用分配的mmap 有谁知道在提交内存之前大量分配地址空间的典型开销 无论是使用MAP NORESERVE或者用稀疏文件支持空间 让我印象深刻的是 mmap 不能是空闲的 因为它必须为分配的空间创建
  • 防止在文本框中输入特殊字符(解决方案中已经有数千个文本框)

    我们有一个使用 C Windows 窗体 编写的高级软件 在他们中我们有 1000 个或更多的文本框 我需要验证所有这些文本框中的用户输入 以停止输入特殊字符和任何脚本 文本框是硬编码的 例如 我可以在每次按键时使用以下代码来检查用户是否输
  • selenium:如何在单击按钮后获取页面源代码

    我正在使用 selenium 和 python 来测试我的网络服务器 我需要的是在输入文本中填写文本 然后单击按钮将消息提交到我的服务器并打开一个新网页 这是我的代码 from selenium import webdriver from
  • 如何更改 Azure SQL 数据库中的时区?

    我们希望通过使用 C 解决方案之类的方法来获取特定位置的日期 TimeZoneInfo ConvertTimeBySystemTimeZoneId DateTime Now West US Time 或者通过设置 Azure SQL 数据库
  • 如何使用 jQuery/JavaScript 删除所有 CSS 类?

    而不是单独调用 item removeClass 对于元素可能具有的每个类 是否有一个可以调用的函数来从给定元素中删除所有 CSS 类 jQuery 和原始 JavaScript 都可以工作 item removeClass Calling
  • 在金字塔结构中生成随机玩家优势 (PHP)

    对于在线游戏 MMORPG 我想创建具有随机强度值的角色 玩家 越是强的角色 这种东西就越不应该存在 Example 12 000 实力 1 玩家 10 500 实力 2 名玩家 8 500 实力 3 玩家 6000实力4位玩家 3 000
  • 骑士之旅 - 导致无限循环,我不明白为什么

    我正在尝试使用回溯来解决骑士的旅行问题 我认为我的算法应该有效 我已经尝试过 但我不明白为什么它不起作用 这会导致无限循环 但是 如果我注释掉回溯的行solutionBoard dst x dst y 1 有用 我只是不明白为什么 任何帮助
  • 为什么Delphi XE3给出“E2382无法使用实例变量调用构造函数”?

    我有一段简单的代码 可以在 Delphi XE2 中编译 但不能在 XE3 中编译 我不知道为什么 我已将有问题的代码减少到一小部分 并想知道 Delphi 认为它有什么问题 尝试在 Delphi XE 2 中编译包含此单元的项目工作正常
  • 显示所有打开的信息窗口

    我试图让自定义信息窗口浮动在标记上方 但是我注意到任何时候只能打开一个标记 有解决方法吗 这是我目前生成的代码 downloadUrl AllActivityxml php function data var xml data respon
  • C++ 数组成员在复制控制函数中如何处理?

    这是我很久以来一直想知道的事情 举个例子 struct matrix float data 16 我知道默认构造函数和析构函数在这个特定示例中做什么 什么都不知道 但是复制构造函数和复制赋值运算符呢 struct matrix float
  • python散点图面积大小比例轴长度

    我对此感到非常绝望 到目前为止我在 www 上找不到任何东西 情况是这样的 我正在使用Python 我有 3 个数组 x 坐标 y 坐标和半径 我想用给定的 x 和 y 坐标创建散点图 到目前为止 一切都按照我想要的方式进行 这是困扰我的事
  • 如何在 XAML 中设置边框的 MouseOver 事件/触发器?

    我希望当鼠标位于边框上方时边框变为绿色 然后当鼠标不再位于边框上方时返回蓝色 我尝试这样做但没有任何运气
  • IIS7 发布/放置/修补/删除 WCF oData - 身份验证失败 401.3

    从 IIS6 迁移到 IIS7 后 所有使用 WCF oData 服务的站点在尝试发出 Post Put Patch Delete 请求时都会提示输入凭据 将不断提示用户输入凭据 直到取消请求 取消请求后 他们将收到401 3来自服务器的响
  • 如何同时播放多个ogg或mp3..?

    我正在尝试使用 MediaPlayer 同时播放 20 个 ogg 文件 这是因为我想做一个混合效果 在播放一首音乐的同时 还必须播放其他文件 其实我已经用iOS制作了一个具有此功能的应用程序 并且播放和混音没有任何问题 现在 我应该将这个
  • 条件运算符和比较委托

    给定 Comparison 方法的两种实现 compares by Key private static int CompareByKey KeyValuePair
  • 在 iPhone 应用程序中创建多个日志文件

    我想在我的 iPhone 应用程序中创建两个日志文件 如果我使用 freopen 将 NSLog 输出重定向到一个文件 那么所有日志语句都将进入一个提到的文件中 但我想将一些日志语句放入一个文件中 而将一些日志语句放入不同的文件中 任何想法
  • TinyMCE 编辑器固定大小且没有滚动条?

    目前我有这个 tinyMCE init General options mode exact elements fkField lkField ukcField khField theme advanced plugins table wi
  • Python 类型提示 可使用一种已知位置类型调用,然后使用 *args 和 **kwargs

    我下面的功能foo 其中有 具有已知类型的一个位置 arg 之后有可变数量的位置参数和关键字参数 from typing import Callable def foo bar str args kwargs gt None Some fu