小编Bor*_*lis的帖子

自定义 __init__ 函数如何在 pydantic 中通过继承工作?

我正在尝试将 pydantic 中的继承与自定义 __init__ 函数一起使用。我有父类(鱼)和子类(鲨鱼),它们都需要更多的初始化而不仅仅是设置字段(在 MWE 中由附加的打印语句表示)。所以我需要重写他们的初始化。

我试过:

class fish(BaseModel):
    name: str
    def __init__(self, name):
        super().__init__(name=name)
        print("Fish initialization successful!")
        

class shark(fish):
    color: str
    def __init__(self, name, color):
        super().__init__(name=name)
        self.color=color
        print("Shark initialization successful!")
        
f = fish(name="nemo")
print(f)
s = shark(name="bruce", color="grey")
Run Code Online (Sandbox Code Playgroud)

但这会引发验证错误:

Fish initialization successful!
name='nemo'
---------------------------------------------------------------------------
ValidationError                           Traceback (most recent call last)
Cell In[149], line 17
     15 f = fish(name="nemo")
     16 print(f)
---> 17 s = shark(name="bruce", color="grey")

Cell In[149], line 11, in shark.__init__(self, name, color)
     10 def __init__(self, name, …
Run Code Online (Sandbox Code Playgroud)

python inheritance init pydantic

6
推荐指数
1
解决办法
3999
查看次数

标签 统计

inheritance ×1

init ×1

pydantic ×1

python ×1