ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python - pydantic(2)嵌套模型

2021-09-12 22:32:45  阅读:320  来源: 互联网

标签:None name Python ts 嵌套 int BaseModel id pydantic


简单的栗子

class User(BaseModel):
    id: int  # 必填字段
    name: str = "小菠萝"  # 有默认值,选填字段
    signup_ts: Optional[datetime] = None
    friends: List[int] = []  # 列表中元素是 int 类型,或可以直接转成 int 的类型


# 关键字参数
user = User(id="1",
            name="大菠萝",
            signup_ts="2021-09-16 12:22")
print(user.dict())

# 字典解包传参
data = {
    "id": "2",
    "name": "大大的菠萝",
    "friends": [1, 2, 3]
}
user = User(**data)
print(user.dict())


# 输出结果
{'id': 1, 'name': '大菠萝', 'signup_ts': datetime.datetime(2021, 9, 16, 12, 22), 'friends': []}
{'id': 2, 'name': '大大的菠萝', 'signup_ts': None, 'friends': [1, 2, 3]}

 

嵌套模型

可以使用模型本身作为数据类型提示来定义更复杂的分层数据结构

from typing import List
from pydantic import BaseModel


class Foo(BaseModel):
    count: int
    size: float = None


class Bar(BaseModel):
    apple = 'x'
    banana = 'y'


class Spam(BaseModel):
    foo: Foo
    bars: List[Bar]


f = Foo(count=2)
b = Bar()
s = Spam(foo=f, bars=[b])

print(s.dict())


# 输出结果
{'bars': [{'apple': 'x', 'banana': 'y'}], 'foo': {'count': 2, 'size': None}}

 

标签:None,name,Python,ts,嵌套,int,BaseModel,id,pydantic
来源: https://www.cnblogs.com/poloyy/p/15260379.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有