Python Pydantic 双底座模型
Python Pydantic double base model
我将 FastAPI 与 Pydantic 一起使用,我正在努力实现我的 API 接受驼峰大小写参数,为此,我使用以下
from pydantic import BaseModel
from humps import camelize
class CamelModel(BaseModel):
class Config:
alias_generator = camelize
allow_population_by_field_name = True
class MyClass(CamelModel):
my_field1: int
my_field2: int
my_field3: int
到目前为止效果很好,但 MyClass 是其他 class 的基础 class,例如
class MyNewClass(MyClass):
my_field4: float
如何让 MyNewClass 也使用驼峰式大小写 class?我尝试过
from typing import Union
class MyNewClass(Union[MyClass, CamelModel]):
my_field4: float
但是我遇到了这个错误
TypeError: Cannot subclass <class 'typing._SpecialForm'>
有什么办法可以实现吗?
谢谢!
您要实现的目标称为 multiple inheritance
。由于您继承自 CamelModel 的 class,因此无需再次继承它
适当的代码应该是
class MyNewClass(MyClass):
这是多重继承的 python 语法。请在此处查看详细示例 https://www.python-course.eu/python3_multiple_inheritance_example.php#An-Example-of-Multiple-Inheritance
您使用的代码 (class MyNewClass(Union[MyClass, CamelModel]):
) 用于声明数据类型,这有点正确,但位置不对。键入几乎仅(据我所知)用于函数的参数。
注意
我没有测试上面的这段代码,但我很确定它可以工作。如果有任何问题,请告诉我
我将 FastAPI 与 Pydantic 一起使用,我正在努力实现我的 API 接受驼峰大小写参数,为此,我使用以下
from pydantic import BaseModel
from humps import camelize
class CamelModel(BaseModel):
class Config:
alias_generator = camelize
allow_population_by_field_name = True
class MyClass(CamelModel):
my_field1: int
my_field2: int
my_field3: int
到目前为止效果很好,但 MyClass 是其他 class 的基础 class,例如
class MyNewClass(MyClass):
my_field4: float
如何让 MyNewClass 也使用驼峰式大小写 class?我尝试过
from typing import Union
class MyNewClass(Union[MyClass, CamelModel]):
my_field4: float
但是我遇到了这个错误
TypeError: Cannot subclass <class 'typing._SpecialForm'>
有什么办法可以实现吗? 谢谢!
您要实现的目标称为 multiple inheritance
。由于您继承自 CamelModel 的 class,因此无需再次继承它
适当的代码应该是
class MyNewClass(MyClass):
这是多重继承的 python 语法。请在此处查看详细示例 https://www.python-course.eu/python3_multiple_inheritance_example.php#An-Example-of-Multiple-Inheritance
您使用的代码 (class MyNewClass(Union[MyClass, CamelModel]):
) 用于声明数据类型,这有点正确,但位置不对。键入几乎仅(据我所知)用于函数的参数。
注意 我没有测试上面的这段代码,但我很确定它可以工作。如果有任何问题,请告诉我