我在Pydantic中使用FastAPI,并试图实现我的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也使用camel case基类?我试过
from typing import Union
class MyNewClass(Union[MyClass, CamelModel]):
my_field4: float但我发现了这个错误
TypeError: Cannot subclass <class 'typing._SpecialForm'>有什么办法可以做到这一点吗?谢谢!
发布于 2020-09-21 21:06:37
你想要达到的目标叫做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]):)用于声明数据类型,这是正确的,但位置不对。输入几乎仅用于函数的参数(据我所见)。
注意到我没有测试上面的代码,但我很确定它能工作。如果有什么问题请告诉我
https://stackoverflow.com/questions/63998828
复制相似问题