如何在 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))

祝你好运,编码愉快!