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]):) 用于声明数据类型,这有点正确,但位置不对。键入几乎仅(据我所知)用于函数的参数。

注意 我没有测试上面的这段代码,但我很确定它可以工作。如果有任何问题,请告诉我