我正在尝试将 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)