尽管可以用更好的方式来表达问题,但想法很简单。

我有两节课。包裹和包裹请求。 API中使用ParcelRequest来请求有关具有给定参数的Parcel的信息,以及

实际上,ParcelRequest需要与Parcel相同的所有参数,但需要附加的quantity值。

from pydantic import BaseModel

class Parcel(BaseModel):
    length: float
    width: float
    height: float
    weight: float


class ParcelRequest(BaseModel):
    length: float
    width: float
    height: float
    weight: float
    quantity: int


每当修改包裹时,有没有办法使包裹和包裹请求保持“同步”?

from pydantic import BaseModel

class Parcel(BaseModel):
    length: float
    width: float
    height: float
    weight: float


class ParcelRequest(BaseModel):
    # unpack Parcel attributes here
    quantity: int


注意:在此特定示例中,我们无法更改传入请求的结构。这意味着,我们不能简单地在ParcelRequest中包含引用Parcel对象的“ parcel”属性,因为这会改变请求的结构。

问题是这是否可以做到。但是作为奖励,应该这样做吗?我的信念是,尽管API会随着Parcel的发展而保持最新,但开发人员可能会通过更新Parcel来无意间破坏API,除非经过仔细的对待且未经适当的测试。

最佳答案

不要重复自己,说出要继承的类:

class MetaParcel(BaseModel):
    length: float
    width: float
    height: float
    weight: float


class ParcelRequest(MetaParcel):
    quantity: int

关于python - 解压缩类定义以在对象之间共享变量名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59127978/

10-09 17:11