如何在pydantic中动态生成属性?

2024-10-02 18:23:48 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我们有一张名单:

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"

为什么会这样?有更好的方法吗


Tags: name模型selfnamesstudentclassbasemodelint
1条回答
网友
1楼 · 发布于 2024-10-02 18:23:48

我认为这个问题与没有在模型本身中定义学生以及没有对继承的类调用__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))

祝你好运和快乐

相关问题 更多 >