如何解决Python Pydantic双基础模型
我正在将FastAPI与Pydantic配合使用,并且试图实现我的API接受cammel大小写参数,为此,我正在使用以下内容
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 MyNewClass(MyClass):
my_field4: float
如何获取MyNewClass以便也使用骆驼保护套基类?我尝试过类似的
from typing import Union
class MyNewClass(Union[MyClass,CamelModel]):
my_field4: float
但是我遇到了这个错误
TypeError: Cannot subclass <class 'typing._SpecialForm'>
有什么办法可以做到这一点? 谢谢!
解决方法
您要实现的目标称为multiple inheritance
。由于您继承自从CamelModel继承的类,因此无需再次继承
适当的代码应该是
class MyNewClass(MyClass):
这是多重继承的python语法。在此处https://www.python-course.eu/python3_multiple_inheritance_example.php#An-Example-of-Multiple-Inheritance
中查看广泛的示例您使用的代码(class MyNewClass(Union[MyClass,CamelModel]):
)用于声明数据类型,这是正确的,但是使用的地方不正确。打字(据我所知)几乎仅用于函数的参数。
注意 我没有测试上面的代码,但是我很确定它可以工作。让我知道是否有任何问题
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。