我想在创建数据类时使用Union
andOptional
类型。我可以安全地使用这些类型吗?
例如:
@dataclass
class Car:
year: int
owner: Optional[str]
engine: Union[Engine1, Engine2]
我想在创建数据类时使用Union
andOptional
类型。我可以安全地使用这些类型吗?
例如:
@dataclass
class Car:
year: int
owner: Optional[str]
engine: Union[Engine1, Engine2]
是的你可以。首先,python 中的注释本身不会做任何事情。在其他语言中,您可能希望将变量声明为 asint
会导致错误,如果它被实例化为字符串,但在 python 中并非如此。
注释仅由第三方库或工具使用,例如当您的 IDE 向您提供提示或mypy
对您的代码进行静态类型分析时。
因此,您应该使用一种您的工具可以很好地使用的注释,并且根据我的个人经验,这意味着使用typing
模块中的类型注释而不是基本类型。
虽然没有关于您必须使用什么的声明性声明,但这里有一个讨论默认数据类类型的线程,包括 ericvsmith(dataclasses 模块的作者)和 gvanrossum(python 的作者),他们同意typing.Any
应该优先于object
.
我假设数据类文档使用基本的 python 类型,以免给读者带来太多的知识负担。毕竟,您可以很好地使用数据类,而无需对模块一无所知typing
,一旦您对数据类的工作方式感到满意,您可能会遇到并欣赏使用typing
' 注释的额外功能。