gpt4 book ai didi

Python Pydantic - 如何拥有 "optional"字段,但如果存在则需要符合非 None 值?

转载 作者:太空宇宙 更新时间:2023-11-03 19:45:03 24 4
gpt4 key购买 nike

我正在尝试验证一个具有“可选”字段的对象,因为它们可能存在也可能不存在。但是当它们存在时,字段应该符合特定的类型定义(而不是 None)。

在下面的示例中,“大小”字段是可选的,但允许“无”。我希望“大小”字段是可选的,但如果存在,它应该是一个 float 。

from pydantic import BaseModel

class Foo(BaseModel):
count: int
size: float = None # how to make this an optional float?

>>> Foo(count=5)
Foo(count=5, size=None) # GOOD - "size" is not present, value of None is OK


>>> Foo(count=5, size=None)
Foo(count=5, size=None) # BAD - if field "size" is present, it should be a float

# BONUS
>>> Foo(count=5)
Foo(count=5) # BEST - "size" is not present, it is not required to be present, so we don't care about about validating it all. We are using Foo.json(exclude_unset=True) handles this for us which is fine.

最佳答案

from pydantic import BaseModel
from typing import Optional

class Foo(BaseModel):
count: int
size: Optional[float]


obj = Foo(count=5)
obj_2 = Foo(count=5, size=1.6)

# count=5 size=None
print(obj)
# count=5 size=1.6
print(obj_2)

这可能会令人困惑,但输入的可选类型将使您有可能拥有“可选”字段

关于Python Pydantic - 如何拥有 "optional"字段,但如果存在则需要符合非 None 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60191270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com