原理解析為什么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)
上面的代碼,運(yùn)行后輸出如下:
[1]
[]
我有一個(gè)疑問,就是 friends 的默認(rèn)值是一個(gè) []
空列表,通過前后兩次實(shí)例化,兩個(gè)實(shí)例對象持有的 friends 為什么指向的不是同一個(gè) list 呢?
如果去掉繼承 BaseModel,輸出的兩個(gè)就都是 [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 施加了什么“魔法”?
更多關(guān)于為什么 pydantic 中的可變對象沒有隨著修改變化呢?的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python報(bào)錯(cuò)TypeError: object of type ‘gener
在Python開發(fā)的復(fù)雜世界中,報(bào)錯(cuò)信息就像神秘的謎題,困擾著開發(fā)者和環(huán)境配置者,其中,TypeError: object of type ‘generator’ has no len()這個(gè)報(bào)錯(cuò),常常在不經(jīng)意間打亂我們的開發(fā)節(jié)奏,本文讓我們一起深入探究這個(gè)報(bào)錯(cuò)問題,為Python開發(fā)之路掃除障礙2024-10-10pytorch實(shí)現(xiàn)onehot編碼轉(zhuǎn)為普通label標(biāo)簽
今天小編就為大家分享一篇pytorch實(shí)現(xiàn)onehot編碼轉(zhuǎn)為普通label標(biāo)簽,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01Python實(shí)現(xiàn)樹的先序、中序、后序排序算法示例
這篇文章主要介紹了Python實(shí)現(xiàn)樹的先序、中序、后序排序算法,結(jié)合具體實(shí)例形式分析了Python數(shù)據(jù)結(jié)構(gòu)中樹的定義及常用遍歷、排序操作技巧,需要的朋友可以參考下2017-06-06Python實(shí)現(xiàn)爬取百度貼吧帖子所有樓層圖片的爬蟲示例
這篇文章主要介紹了Python實(shí)現(xiàn)爬取百度貼吧帖子所有樓層圖片的爬蟲,涉及基于urllib的網(wǎng)頁訪問與正則匹配相關(guān)操作技巧,需要的朋友可以參考下2018-04-04Python+Pygame實(shí)現(xiàn)經(jīng)典魂斗羅游戲
《魂斗羅》(Contra)是由Konami于1987年推出的一系列卷軸射擊類單機(jī)游戲。本文將利用Python中的Pygame庫實(shí)現(xiàn)這一經(jīng)典游戲,感興趣的可以了解一下2022-05-05Python標(biāo)準(zhǔn)庫筆記struct模塊的使用
這篇文章主要介紹了Python標(biāo)準(zhǔn)庫筆記struct模塊的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-02-02