#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='')]