1

虽然可能有更好的方式来表达这个问题,但这个想法非常简单。

我有两节课。包裹和包裹请求。ParcelRequest 在 API 中用于请求具有给定参数的 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

每当 Parcel 被修改时,有没有办法让 Parcel 和 ParcelRequest “同步”?

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,除非经过仔细处理并且没有进行适当的测试。

4

1 回答 1

2

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

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


class ParcelRequest(MetaParcel):
    quantity: int
于 2019-12-01T17:20:48.663 回答