You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pydantic捕获数据类的非正整数属性赋值错误

解决Pydantic Dataclass属性赋值不校验的问题

默认情况下,pydantic的dataclass只在实例化阶段校验字段合法性,后续直接修改属性值不会自动触发校验,所以你最后一行给value赋值-1的操作不会报错。要捕获这种无效赋值,只需开启赋值校验功能:

  1. 在@dataclass装饰器中添加config={"validate_assignment": True},开启赋值时的校验逻辑
  2. 用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 21:28:09