如何使用Pydantic捕获数据类的非正整数属性赋值错误
解决Pydantic Dataclass属性赋值不校验的问题
默认情况下,pydantic的dataclass只在实例化阶段校验字段合法性,后续直接修改属性值不会自动触发校验,所以你最后一行给value赋值-1的操作不会报错。要捕获这种无效赋值,只需开启赋值校验功能:
- 在
@dataclass装饰器中添加config={"validate_assignment": True},开启赋值时的校验逻辑 - 用
try-except块捕获赋值时抛出的ValidationError
修改后的代码如下:
from pydantic.dataclasses import dataclass from pydantic import PositiveInt, ValidationError @dataclass(config={"validate_assignment": True}) class MyDataClass: value: PositiveInt my_class = MyDataClass(value=10) try: my_class.value = -1 except ValidationError as e: print("捕获到无效赋值错误:") print(e)
运行后会输出明确的错误提示,指出value必须是正整数:
捕获到无效赋值错误: 1 validation error for MyDataClass value Input should be a positive integer [type=positive_int, input_value=-1, input_type=int]
内容的提问来源于stack exchange,提问作者DJames
相关产品推荐
相关产品推荐

