pydantic学习与使用-6.dataclasses 验证器
前言
validator 验证器也可以应用于 pydantic dataclasses.
pydantic dataclasses
pydantic 里面的 dataclassesdata 是 dataclasses.dataclass 和 validation 的结合。
from datetime import datetime
from pydantic import validator
from pydantic.dataclasses import dataclass
@dataclass
class DemoDataclass:
ts: datetime = None
@validator('ts', pre=True, always=True)
def set_ts_now(cls, v):
return v or datetime.now()
print(DemoDataclass())
# > DemoDataclass(ts=datetime.datetime(2021, 12, 31, 15, 4, 57, 631059))
print(DemoDataclass(ts='2017-11-08T14:00'))
# > DemoDataclass(ts=datetime.datetime(2017, 11, 8, 14, 0))
使用示例
validator 验证同样适用pre 和 each_item 验证器
from pydantic import validator
from pydantic.dataclasses import dataclass
from typing import List
@dataclass
class User(object):
name: str
age: int
friends: List[int]
@validator('name')
def name_must_contain_space(cls, v):
if ' ' not in v:
raise ValueError('must contain a space')
return v
@validator('age')
def check_age(cls, v):
if v < 18:
raise ValueError('age less then 18')
return v
@validator('friends', each_item=True)
def check_friends(cls, v):
assert v >= 2, f'{v} is not greater then 2'
return v
user = User(name='yo yo',
age=20,
friends=[2, 3, 4])
print(user) # User(name='yo yo', age=20, friends=[2, 3, 4])
print(user.name) # yo yo
print(user.age) # 20
print(user.friends) # [2, 3, 4]
标签:
pydantic
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2020-02-21 httprunner学习26-cookies关联(403 Forbidden问题解决)
2017-02-21 Selenium2+python自动化29-js处理多窗口