栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在python数据类__init__方法中强制进行类型转换

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在python数据类__init__方法中强制进行类型转换

从强制或检查类型的意义上讲,永远不要遵循dataclass属性的类型提示。大多数情况下,像mypy这样的静态类型检查器都可以完成这项工作,Python在运行时不会这样做,因为它永远不会这样做。

如果要添加手动类型检查代码,请使用以下

__post_init__
方法:

@dataclasses.dataclassclass Test:    value: int    def __post_init__(self):        if not isinstance(self.value, int): raise ValueError('value not an int') # or self.value = int(self.value)

您可以

dataclasses.fields(self)
用来获取
Field
指定字段和类型的对象的元组,并在其上循环以针对每个字段自动执行此操作,而无需为每个字段单独编写。

def __post_init__(self):    for field in dataclasses.fields(self):        value = getattr(self, field.name)        if not isinstance(value, field.type): raise ValueError(f'Expected {field.name} to be {field.type}, '       f'got {repr(value)}') # or setattr(self, field.name, field.type(value))


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/625695.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号