class mail(BaseModel):
mailid: int
email: str
class User(BaseModel):
id: int
name: str
mails: List[mail]
data = {
'id': 123,
'name': 'Jane Doe',
'mails':[
{'mailid':1,'email':'aeajhs@gmail.com'},
{'mailid':2,'email':'aeajhsds@gmail.com'}
]
}
userobj = User(**data)
如何在mail
类中获取email
的值或从mail
类中获取mailid
的值
当我尝试使用print(mail.email)
时,它会抛出错误
AttributeError: type object 'mail' has no attribute 'email'
当我用这个的时候也会出错
print(userobj.mails.email)
AttributeError: 'list' object has no attribute 'email'
当我使用它时,我得到如下数据
print(userobj.mails)
[mail(mailid=1, email='aeajhs@gmail.com'), mail(mailid=2, email='aeajhsds@gmail.com')]
我的愿望输出必须是当我想要打印电子邮件时,我必须得到'aeajhs@gmail.com','aeajhsds@gmail.com'
看起来您正在尝试访问类而不是实例
这里有一种方法:
有了这些,让我们调整
User
模型:如果您只需要其中一个电子邮件地址,则需要指定其中一个,例如:
为了获得所有电子邮件地址的列表,您需要迭代
mails
,例如:作为旁注:Pydantic支持email string validation
错误
表示您正在访问
mails
列表的属性,而不是mail
对象应首先使用索引从列表中拾取对象:
而且,如果您想要每个
mails
实例的每封电子邮件,请执行以下操作相关问题 更多 >
编程相关推荐