gpt4 book ai didi

python - 为返回参数类型的 Python 函数指定类型注释

转载 作者:行者123 更新时间:2023-12-04 13:14:04 25 4
gpt4 key购买 nike

如何正确地对下面的函数进行类型注释?

def f(cls: type) -> ???:
return cls()

# Example usage:
assert f(int) == 0
assert f(list) == []
assert f(tuple) == ()

有没有办法对 ??? 进行类型注释与涉及 cls 的值的东西而不仅仅是 Any或者省略返回类型注释?如果我必须更改 cls 的类型注释就可以了范围。

最佳答案

混合使用 Callable Type 和一个 TypeVar 指示返回类型如何对应于参数类型:

from typing import Callable, TypeVar, Type

T = TypeVar("T")


# Alternative 1, supporting any Callable object
def f(cls: Callable[[], T]) -> T:
return cls()

ret_f = f(int)
print(ret_f) # It knows ret_f is an int


# Alternative 2, supporting only types
def g(cls: Type[T]) -> T:
return cls()

ret_g = f(int)
print(ret_g) # It knows ret_g is an int

第一种选择接受任何可调用对象;不仅仅是创建对象的调用。

感谢您的更正@chepner

关于python - 为返回参数类型的 Python 函数指定类型注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62153257/

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