Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 显式声明嵌套类型的用户定义类型_Python_Python 3.7_Mypy - Fatal编程技术网

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

Python 显式声明嵌套类型的用户定义类型,python,python-3.7,mypy,Python,Python 3.7,Mypy,我发现使用诸如Dict[str,int]之类的Python类型非常有用,它们声明了它们包含的类型,并允许对它们进行类型检查。但是,我找不到如何创建这样的类型。例如,如果我写 Classy类: def uuu init uuu(self,x:Any)->无: self.value=x 如何将其表示为Classy[int],Classy[str],Classy[List[int]]等?使用TypeVar()声明类型变量,并使用Generic作为基类 from typing import TypeV

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

Classy类:
def uuu init uuu(self,x:Any)->无:
self.value=x
如何将其表示为
Classy[int]
Classy[str]
Classy[List[int]]
等?

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