代码之家  ›  专栏  ›  技术社区  ›  dmvianna

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

  •  -1
  • dmvianna  · 技术社区  · 6 年前

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

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

    我怎么能把它表达成 Classy[int] , Classy[str] , Classy[List[int]] 等?

    1 回复  |  直到 6 年前
        1
  •  1
  •   C.K.    6 年前

    使用 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
    
    推荐文章