用户定义的类型显式声明一个嵌套类型

时间:2019-01-19 08:38:02

标签: python python-3.7 mypy

我发现拥有Dict[str, int]之类的Python类型确实很有用,它们声明它们包含的类型并允许对其进行类型检查。但是我找不到如何创建这样的类型。例如,如果我写

    class Classy:
       def __init__(self, x: Any) -> None:
           self.value = x

如何将其表示为Classy[int]Classy[str]Classy[List[int]]等?

1 个答案:

答案 0 :(得分:1)

使用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