Распаковка определения класса для совместного использования имен переменных между объектами
Хотя может быть лучший способ сформулировать вопрос, идея довольно проста.
У меня два класса. Parcel и ParcelRequest. 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 и ParcelRequest при каждом изменении Parcel?
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 по мере его развития, разработчик может непреднамеренно нарушить работу API, обновив Parcel, если к нему не обращаться осторожно и без надлежащих тестов.
1 ответ
Не повторяйтесь, сформулируйте класс, от которого нужно наследовать:
class MetaParcel(BaseModel):
length: float
width: float
height: float
weight: float
class ParcelRequest(MetaParcel):
quantity: int