如何在 pydantic 中动态生成属性?
How to generate attributes dynamically in pydantic?
假设我们有这个名单:
students = ['A','B','C']
我有这个带有 pydantic 的模型:
class Student(BaseModel):
name: str
rank: int = 0
我有这个模型,我想动态地填充学生并有一个模板:
class MathClass(BaseModel):
def __init__(self, student_names):
self.students = []
for student_name in student_names:
self.students.append(Student(name=student_name))
当我使用
启动我的代码时
math_class=MathClass(students)
我收到这个错误:
ValueError: "MathClass" object has no field "students"
为什么会这样?有更好的方法吗?
我认为问题与未在模型本身中定义学生以及未对继承的 class 调用 __init__()
有关。通过像这样修改 MathClass
,我能够将您的代码设置为 运行:
class MathClass(BaseModel):
students: list = []
def __init__(self, student_names: list):
super().__init__()
for student_name in student_names:
self.students.append(Student(name=student_name))
祝你好运,编码愉快!
假设我们有这个名单:
students = ['A','B','C']
我有这个带有 pydantic 的模型:
class Student(BaseModel):
name: str
rank: int = 0
我有这个模型,我想动态地填充学生并有一个模板:
class MathClass(BaseModel):
def __init__(self, student_names):
self.students = []
for student_name in student_names:
self.students.append(Student(name=student_name))
当我使用
启动我的代码时math_class=MathClass(students)
我收到这个错误:
ValueError: "MathClass" object has no field "students"
为什么会这样?有更好的方法吗?
我认为问题与未在模型本身中定义学生以及未对继承的 class 调用 __init__()
有关。通过像这样修改 MathClass
,我能够将您的代码设置为 运行:
class MathClass(BaseModel):
students: list = []
def __init__(self, student_names: list):
super().__init__()
for student_name in student_names:
self.students.append(Student(name=student_name))
祝你好运,编码愉快!