明确声明嵌套类型的用户定义类型
User-defined type declaring explicitly a nested type
我发现 Python 类型(例如 Dict[str, int]
)非常有用,它声明它们包含的类型并允许对它们进行类型检查。但是我找不到如何创建这样的类型。例如,如果我写
class Classy:
def __init__(self, x: Any) -> None:
self.value = x
如何表示为Classy[int]
、Classy[str]
、Classy[List[int]]
等?
使用TypeVar()
声明类型变量,使用Generic
作为基础class.
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
我发现 Python 类型(例如 Dict[str, int]
)非常有用,它声明它们包含的类型并允许对它们进行类型检查。但是我找不到如何创建这样的类型。例如,如果我写
class Classy:
def __init__(self, x: Any) -> None:
self.value = x
如何表示为Classy[int]
、Classy[str]
、Classy[List[int]]
等?
使用TypeVar()
声明类型变量,使用Generic
作为基础class.
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