我正在使用Python3
的新的dataclass
特性,它允许指定类字段的类型。在这个例子中,field2的类型应该是List[int],我向它传递了一个List[str]。这段代码运行时没有失败,我想知道是否有一种(自动的)方法使代码失败(即使用断言等),如果错误的类型传递给类。在
from dataclasses import *
import typing
@dataclass
class C:
field1: str
field2: typing.List[int]
if __name__ == '__main__':
x = C('a',['a','b'])
print(repr(x))
数据类使用type hints,在运行时不检查。可以使用静态类型分析工具(如^{} )检查它们。在
数据类不打算提供运行时类型检查字段。您只不过是为生成的类定义字段,而类型暗示语法使这项工作变得容易,还提供了类型提示。在
如果只使用类型提示而不使用mypy之类的类型检查器工具,那么至少现在已经记录了预期的类型。另外,一些Python ide(如PyCharm和wingede)可以提供更智能的自动完成提示。在
我不会尝试在运行时强制执行类型提示,即使技术上您可以实现这样的功能。你真的不想测试列表中的每一个元素是否都是整数。这只是在浪费CPU时间,在这种情况下,您只想编写一个不会产生如此无效列表的代码。静态类型检查的目的是在不增加运行时开销的情况下提供后者。在
相关问题 更多 >
编程相关推荐