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