python - 如何指定返回类型与输入类型相同?

标签 python type-hinting typing

我有一个下面的函数,其中target可以是任何类型。我想输入此函数,以便输出 T 与作为 target 传入的任何类型相同。

from typing import Type, TypeVar

T = TypeVar("T")

def lowercase_if_possible(target: Type[T]) -> T:
    if isinstance(target, str):
        return target.lower()
    return target

我认为这与泛型有关,但我无法弄清楚语法,因为 Python 文档仅显示类上使用的泛型,而不是单个函数。

最佳答案

Type[T] 表示target 的值是一个类(或子类)本身,而不是该类型的值。例如,

def instantiate(c: Type[T]) -> T:
    return c()

instantiate(int)  # Returns 0, a value of type int
instantiate(str)  # Returns "", a value of type str

T 就足够了。给定 T 类型的值,您将返回 T 类型的值,无论该类型是什么。

def lowercase_if_possible(target: T) -> T:
    if isinstance(target, str):
        return target.lower()
    return target

(请注意,如果没有运行时检查来确定 T 实际上是什么,唯一认为您能做的就是返回给定值,因为您知道的不够多关于实际使用它做任何事情的值(value)。)

泛型用于定义一个类,包装任意但明确的类型。

关于python - 如何指定返回类型与输入类型相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70099076/

相关文章:

python - 迭代并比较python中的两个列表

python - 如何枚举列表中的值然后在函数中求和?

python - 为什么在 Pycharm 中连接混合类型列表时会收到警告?

python - 我应该如何使用 Optional 类型提示?

typescript - 是否有 TypeScript 编译器选项强制对对象属性进行类型检查?

css - 如何在文本结束后停止光标

ocaml - 类型构造函数尚未完全定义

Python POST 请求编码

Python 3 基类类型注解只允许当前子类

python - python中元组的键值对