typing 用于类型注解的库
-
类型别名(type alias)
from typing import List
Vector = List[float]
def a(a:float, b:Vector) -> Vector:
...
-
新类型(New Type)
from typing import NewType
UserId = NewType("UserId", int)
UserId(1000)
-
类型变量
from typing import TypeVar
T = TypeVar('T') # 声明类型变量 类型被看成是一个变量
TypeVar 里有一个bound参数 可用来限定类型的允许范围, 比如指定一个基类
-
泛型(Generic)
因为容器中的元素的类型信息由于泛型, 不能通过一般方式静态推断,因此抽象类被用来拓展表示容器中的元素
from typing import Generic, TypeVar
T = TypeVar('T')
class Base(Generic[T]): # 这是个抽象类
def a(self, c:T):
... # c的类型是由被继承的类传入的类型决定的
-
Any
一种特殊的类型, 静态类型检查器将每个类型视与any类型兼容, 任意类型