我发现使用诸如 Dict[str, int] 声明它们包含的类型并允许对它们进行类型检查。但是我找不到如何创建这样的类型。例如,如果我写
Dict[str, int]
class Classy: def __init__(self, x: Any) -> None: self.value = x
我怎么能把它表达成 Classy[int] , Classy[str] , Classy[List[int]] 等?
Classy[int]
Classy[str]
Classy[List[int]]
使用 TypeVar() 声明类型变量,并使用 Generic 作为基类。
TypeVar()
Generic
from typing import TypeVar, Generic T = TypeVar('T') class Classy(Generic[T]): def __init__(self, x: T) -> None: self.value = x def get_value(self) -> T: return self.value
你可以试试:
class1 = Classy[int](100) class2 = Classy[str]('abc') print(class1.get_value()) print(class2.get_value())
然后你会看到:
100 abc