Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.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.x_Mypy_Python Typing - Fatal编程技术网

python类型注释的参数化联合

python类型注释的参数化联合,python,python-3.x,mypy,python-typing,Python,Python 3.x,Mypy,Python Typing,我想定义一个泛型类型,如下所示 MyType(OtherType) := Union[SomeClass, OtherType] 因此,不要键入以下内容来注释x: x: Union[SomeClass, int] 我只要写信就行了 x: MyType[int] # or MyType(int) for what it's worth 我是否必须子类化类型?如果是这样的话,你怎么做呢?如果我理解正确,你需要的只是一个 通过键入import-TypeVar,Union 类SomeClass

我想定义一个泛型类型,如下所示

MyType(OtherType) := Union[SomeClass, OtherType]
因此,不要键入以下内容来注释x:

x: Union[SomeClass, int]
我只要写信就行了

x: MyType[int]   # or MyType(int) for what it's worth

我是否必须子类化
类型
?如果是这样的话,你怎么做呢?

如果我理解正确,你需要的只是一个

通过键入import-TypeVar,Union
类SomeClass:
...
OtherType=TypeVar('OtherType')
MyType=联合[SomeClass,OtherType]
def foo(x:MyType[int])->int:
返回x**2
将这样的代码放在
test.py
模块中

$mypy test.py
给我

test.py:13: error: Unsupported operand types for ** ("SomeClass" and "int")
test.py:13: note: Left operand is of type "Union[SomeClass, int]"
foo

def foo(x:MyType[int])->int:
如果isinstance(x,SomeClass):
返回0
返回x**2
没有问题

笔记 如果我们真的需要这种别名,我会把它叫做

SomeClassOr=Union[SomeClass,OtherType]

SomeClassOr[int]
对我来说似乎比

MyClass[int]
参考文献

如果我错了,请纠正我:
SomeClass
是一个固定的现有类,
OtherType
是一个类型变量?没错,就是这样,如果您认为它可以使问题更清楚,请随意编辑!