小编mik*_*sus的帖子

Pydantic 模型的参数解析器

如何argparse.ArgumentParser从 Pydantic 模型创建参数解析器 ( )?

我有一个 Pydantic 模型:

from pydantic import BaseModel, Field

class MyItem(BaseModel):
    name: str
    age: int
    color: str = Field(default="red", description="Color of the item")
Run Code Online (Sandbox Code Playgroud)

我想创建一个MyItem使用命令行的实例:

python myscript.py --name Jack --age 10 --color blue
Run Code Online (Sandbox Code Playgroud)

这应该产生:

item = MyItem(name="Jack", age=10, color="blue")
... # Process the item
Run Code Online (Sandbox Code Playgroud)

我不想对命令行参数进行硬编码,我想从 Pydantic 模型动态创建命令行参数。

python argparse pydantic

10
推荐指数
1
解决办法
4081
查看次数

Pydantic 模型在传递给另一个模型时被复制

Pydantic 在将模型传递给另一个模型的构造函数时复制模型。这失败了:

from pydantic import BaseModel

class Child(BaseModel):
    pass
    
class Parent(BaseModel):
    child: Child
        
child = Child()
parent = Parent(child=child)
assert parent.child is child
# Fails
Run Code Online (Sandbox Code Playgroud)

当将其传递给父级的构造函数时,它似乎被复制,因此和 的child标识不相同。我希望它们与我稍后需要修改的属性相同,并且更改应该在.childparent.childchildparent.child

如何让 Pydantic 不复制孩子?

python pydantic

4
推荐指数
1
解决办法
2697
查看次数

标签 统计

pydantic ×2

python ×2

argparse ×1