【发布时间】:2021-03-18 11:51:51
【问题描述】:
如何为类列表进行 python 输入。
假设我有以下课程。
from dataclasses import dataclass
@dataclass
class A:
name: str
@dataclass
class B:
age: int
#...
CLASSES = [A, B] #... more classes in list
现在我定义一个函数来实例化以下任何一个类
def func(resource: Union[*CLASSES], value: Union[str, int]):
return resource(value)
但是类型提示在这里无效。 如何从 List 中进行类型提示?
【问题讨论】:
-
你所说的“类型转换”到底是什么意思?请具体。请注意,“类型转换”并不是真正适用于 python 的术语,尽管它被非正式地用来表示“类型转换”。
-
如果您有 10 个或更多可能的类,那么您的代码已经存在严重问题 - 它们可能共享一个更匹配的超类;无论如何,您不能在 variable 上使用扩展来获取存储在其中的类型来定义函数参数的类型 - 您正在混合运行时和编译时信息跨度>
-
类型提示必须是静态的,以便 linter 可以验证它们。
-
不,类型提示仅适用于 IDE/linter,以便更容易发现错误。解释器不使用它们(至少 CPython 不使用)。您不必使用
Union;您可以使用@Grismar 在他们的回答中建议的内容。仅当您使用无法修改的内置或第三方类时,才需要联合。
标签: python python-3.x python-typing