如何在python3数据类中声明类型?

时间:2018-10-28 15:28:44

标签: python python-3.x python-dataclasses

我正在使用dataclass的新Python3功能,该功能允许指定类字段的类型。在此示例中,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))

1 个答案:

答案 0 :(得分:2)

数据类使用type hints,运行时不检查它们。可以使用诸如mypy之类的静态类型分析工具来检查它们。

数据类无意提供运行时类型检查的字段。您只需要为生成的类定义字段,类型提示语法就可以轻松做到这一点,并且提供类型提示。

如果仅使用类型提示而不使用类型检查器工具(例如mypy),则至少现在记录了预期的类型。另外,某些Python IDE(例如PyCharm和WingIDE)可以提供带有此信息的更智能的自动完成提示。

即使在技术上您可以实现此类功能,我也不会尝试在运行时强制执行类型提示。您真的不想测试列表中的每个元素 来查看它们是否不是整数。那只是浪费CPU时间,实际上,您只想编写不会产生这种无效列表的代码。静态类型检查旨在为您提供后者,而不会增加运行时成本。