解压缩类定义以在对象之间共享变量名

时间:2019-12-01 17:14:55

标签: python python-3.x pydantic

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

我有两节课。包裹和包裹请求。 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,除非经过仔细的对待且未经适当的测试。

1 个答案:

答案 0 :(得分:2)

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

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


class ParcelRequest(MetaParcel):
    quantity: int