当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python typing.TypeVar用法及代码示例


用法:

class typing.TypeVar

类型变量。

用法:

T = TypeVar('T')  # Can be anything
A = TypeVar('A', str, bytes)  # Must be str or bytes

类型变量的存在主要是为了静态类型检查器的好处。它们用作泛型类型以及泛型函数定义的参数。有关泛型类型的更多信息,请参阅Generic。通用函数的工作方式如下:

def repeat(x: T, n: int) -> Sequence[T]:
    """Return a list containing n references to x."""
    return [x]*n

def longest(x: A, y: A) -> A:
    """Return the longest of two strings."""
    return x if len(x) >= len(y) else y

后一个示例的签名本质上是 (str, str) -> str(bytes, bytes) -> bytes 的重载。另请注意,如果参数是 str 的某个子类的实例,则返回类型仍然是普通的 str

在运行时,isinstance(x, T) 将引发 TypeError 。通常,isinstance()issubclass() 不应与类型一起使用。

类型变量可以通过传递标记为协变或逆变covariant=True或者contravariant=True.看PEP 484更多细节。默认情况下,类型变量是不变的。或者,类型变量可以使用指定上限bound=<type>.这意味着替换(显式或隐式)类型变量的实际类型必须是边界类型的子类,请参阅PEP 484.

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 typing.TypeVar。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。