gpt4 book ai didi

python - Pydantic:数据类与 BaseModel

转载 作者:行者123 更新时间:2023-12-03 18:33:57 24 4
gpt4 key购买 nike

使用 Pydantic 的数据类 vs BaseModel 的优缺点是什么?是否存在任何性能问题,或者 Pydantic 的数据类在其他 python 模块中是否更容易?

最佳答案

Pydantic 的 documentation 回答了您的问题。 , 具体来说:

Keep in mind that pydantic.dataclasses.dataclass is a drop-in replacement for dataclasses.dataclass with validation, not a replacement for pydantic.BaseModel (with a small difference in how initialization hooks work). There are cases where subclassing pydantic.BaseModel is the better choice.

For more information and discussion see samuelcolvin/pydantic#710.



讨论链接将为您提供一些您正在寻找的上下文。一般来说,Pydantic 的 BaseModel实现不一定与 Python 的 dataclass 行为相同执行。上述问题中引用的示例就是一个很好的示例:

from pydantic import BaseModel
from pydantic.dataclasses import dataclass
from typing import List

@dataclass
class A:
x: List[int] = []

# Above definition with a default of `[]` will result in:
# ValueError: mutable default <class 'list'> for field x is not allowed: use default_factory
# If you resolve this, the output will read as in the comments below.

class B(BaseModel):
x: List[int] = []

print(A(x=[1, 2]), A(x=[3, 4])) # Output: A(x=[1, 2]) A(x=[3, 4])
print(B(x=[1, 2]), B(x=[3, 4])) # Output: x=[1, 2] x=[3, 4]

如果您首先想要的是 dataclass行为,然后简单地用一些 Pydantic 验证功能来增强它, pydantic.dataclasses.dataclass方法可能是你想要的。否则, BaseModel可能是你想要的。

关于python - Pydantic:数据类与 BaseModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62011741/

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