gpt4 book ai didi

具有可变数量的str/相同类型参数的可调用的Python类型提示?

转载 作者:行者123 更新时间:2023-12-04 04:30:58 24 4
gpt4 key购买 nike

如何为所有这些可调用对象指定一种类型:

a(str)
b(str, str)
c(str, str, str)
d(str, str, str, str

我发现我可以指定 Callable[..., None]一般的方式,但是如何详细指定所有参数都将是 str 而不使用丑陋的语法 Union[Callable[[str], None], Callable[[str, str], None, __more_like_this__] .是其他方法吗?我可以使用打字来做到这一点吗?

最佳答案

您可以使用 callback protocol使用可变字符串参数指定函数类型:

from typing_extensions import Protocol


class Callback(Protocol):
def __call__(self, *args: str) -> None: ...

并像这样使用它:
def handler(cb: Callback) -> None:
cb('a', 'b', 'c')

def callback(*args: str) -> None:
pass

handler(callback)

请注意,回调必须采用可变参数,例如。这不起作用:
def callback(a: str, b: str) -> None:
pass

在 Python 3.8 中将协议(protocol)添加到标准库 typing模块,所以如果你想在 Python 3.5-3.7 上使用它们,你需要安装 typing-extensions PyPI 的模块。

关于具有可变数量的str/相同类型参数的可调用的Python类型提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57658879/

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