原理解析为什么pydantic可变对象没有随着修改而变化
作者:ponponon
这篇文章主要介绍了为什么pydantic可变对象没有随着修改而变化的原因解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
正文
from datetime import datetime from typing import List, Optional from pydantic import BaseModel class User(BaseModel): friends: List[int] = [] user_1 = User() user_1.friends.append(1) print(user_1.friends) user_2 = User() print(user_2.friends)
上面的代码,运行后输出如下:
[1]
[]
我有一个疑问,就是 friends 的默认值是一个 []
空列表,通过前后两次实例化,两个实例对象持有的 friends 为什么指向的不是同一个 list 呢?
如果去掉继承 BaseModel,输出的两个就都是 [1]
了
from datetime import datetime from typing import List, Optional from pydantic import BaseModel class User(): friends: List[int] = [] user_1 = User() user_1.friends.append(1) print(user_1.friends) user_2 = User() print(user_2.friends)
输出
[1]
[1]
pydantic 的 BaseModel 施加了什么“魔法”?
更多关于为什么 pydantic 中的可变对象没有随着修改变化呢?的资料请关注脚本之家其它相关文章!