【发布时间】:2022-01-10 06:29:30
【问题描述】:
我的班级首字母如下
class Filter:
...
# no need to assign types
def get_type(self, type_name:str):
if type_name == 'human':
return Human()
elif type_name == 'animal':
return Animal()
elif type_name == 'alien':
return Alien()
return None
...
和类似 (method) get_type: (data: dict) -> Human | Animal | Alien | None的vscode中指示的Filter.get_type()(vscode指示)
但是,我不确定如何将多个可选类型分配给我的变量,例如
import Filter
my_type: ??? = Filter.get_type()
通过将类型添加到my_type,自动补全将识别Human、Animal和Alien中的子类和变量(或绕过None)
如何将列表[Human, Animal, Alien] 中的多个类型分配给my_type?
【问题讨论】:
-
嗯,
Human | Animal | Alien | None? -
@juanpa.arrivillaga 问题是针对 python 3.7.x,而不是 3.10
-
@bottlemind FWIW
|运算符的语法实际上可以使用from __future__ import annotations导入在 python 3.7 中工作 -
Human | Animal | Alien | None是来自 vscode 的指示,我不确定它在 python 中是否是有效的语法;但我相信在 3.7.x ~ 3.10.x 之间添加多种类型选项的方式是一样的 -
@jbl 它在 3.10 中唯一有效的语法是在引入新的 Union 运算符的 PEP 时。在以前的python版本中,使用
__future__导入有效地将注释包装在一个字符串中,因此例如3.10中的A | B在以前的版本中变为'A | B'——注意注释周围的单引号,表明它现在是一个字符串值.
标签: python types python-dataclasses