Инициализация списка pydantic со значениями

#python #list #class #pydantic

Вопрос:

Мой код выглядит так. Но я не могу понять, как вставить obejct prescibeddrug в класс корзины, который является списком[PrescribedDrug]. Я прокомментировал некоторые результаты ошибок.

 from pydantic import BaseModel
from typing import List
from typing import Optional


class PrescribedDrug(BaseModel):
    ean: str
    repayment: str

Cart = List[PrescribedDrug]



drug1 = PrescribedDrug.parse_obj({
    "ean": "5055565722000",
    "repayment": ""
  })
drug2 = PrescribedDrug.parse_obj({
    "ean": "5055565722001",
    "repayment": ""
  })

print(f'type of drug1: {type(drug1)}')

#Cart1 = Cart.__add__(drug1)
#raise AttributeError(attr)
#AttributeError: __add__
#print(Cart1)

#Cart1 = Cart
#Cart1.__add__(drug1)
#print(Cart1)
#raise AttributeError(attr)
#AttributeError: __add__

# Cart1 = Cart
# Cart1.__iadd__([drug1])
# raise AttributeError(attr)
# AttributeError: __iadd__
 

Комментарии:

1. Cart = List[PrescribedDrug] это тип, а не список. Что произойдет, если вы это сделаете cart1: Cart = [] и тогда cart1.append(drug1) ?

Ответ №1:

Cart = List[PrescribedDrug] это тип, а не список.

 from pydantic import BaseModel
from typing import List

class PrescribedDrug(BaseModel):
    ean: str
    repayment: str

Cart = List[PrescribedDrug]

drug1 = PrescribedDrug.parse_obj(
    {
        "ean": "5055565722000",
        "repayment": "",
    }
)
drug2 = PrescribedDrug.parse_obj(
    {
        "ean": "5055565722001",
        "repayment": "",
    }
)

cart: Cart = []

print(f"type of drug1: {type(drug1)}")

cart.append(drug1)
cart.append(drug2)
print(cart)
 

Какие отпечатки

 type of drug1: <class '__main__.PrescribedDrug'>
[PrescribedDrug(ean='5055565722000', repayment=''), PrescribedDrug(ean='5055565722001', repayment='')]