如何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 模型动态创建命令行参数。
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 不复制孩子?