前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pydantic学习与使用-7.字段顺序field-ordering

pydantic学习与使用-7.字段顺序field-ordering

作者头像
上海-悠悠
发布2022-03-03 15:34:40
5040
发布2022-03-03 15:34:40
举报
文章被收录于专栏:从零开始学自动化测试

前言

字段顺序在模型中很重要,原因如下:

  • 在定义的顺序字段中执行验证;字段验证器 可以访问较早字段的值,但不能访问较晚字段的值
  • 字段顺序保留在模型模式中
  • 字段顺序保留在验证错误中
  • 字段顺序由dict()和json()等保存。

字段顺序 field-ordering

从v1.0开始,所有带有注释的字段(无论是仅注释还是带有默认值)都将位于所有没有注释的字段之前。在它们各自的组中,字段保持它们定义的顺序。

代码语言:javascript
复制
from pydantic import BaseModel, ValidationError

class Model(BaseModel):
    a: int
    b = 2
    c: int = 1
    d = 0
    e: float

print(Model.__fields__.keys())
#> dict_keys(['a', 'c', 'e', 'b', 'd'])

于是可以看到a,c,e 注释的字段,在没有注释的字段b和d之前。

代码语言:javascript
复制
m = Model(e=2, a=1)
print(m.dict())
#> {'a': 1, 'c': 1, 'e': 2.0, 'b': 2, 'd': 0}

实例化后也是按字段顺序打印对应的dict格式

校验失败的时候,报错字段顺序也是按字段顺序

代码语言:javascript
复制
try:
    Model(a='x', b='x', c='x', d='x', e='x')
except ValidationError as e:
    error_locations = [e['loc'] for e in e.errors()]

print(error_locations)
#> [('a',), ('c',), ('e',), ('b',), ('d',)]
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 字段顺序 field-ordering
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档