python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > pydantic可变对象修改变化

原理解析为什么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 中的可变对象没有随着修改变化呢?的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文