深淺拷隘庄,新舊類

淺拷貝

淺拷貝僅僅復(fù)制了容器中元素的地址

>>> a=['hello',[1,2,3]]
>>> b=a[:]
>>> [id(x) for x in a]
[55792504, 6444104]
>>> [id(x) for x in b]
[55792504, 6444104]
>>> a[0]='world'
>>> a[1].append(4)
>>> print(a)
['world', [1, 2, 3, 4]]
>>> print(b)
['hello', [1, 2, 3, 4]]

這里可以看出九串,未修改前绞佩,a和b中元素的地址都是相同的,不可變的hello
和可變的list地址都一樣猪钮,說明淺拷貝知識將容器內(nèi)的元素的地址復(fù)制了一份品山。這可以通過修改后,b中字符串沒改變烤低,但是list元素隨著a相應(yīng)改變得到驗證肘交。

淺拷貝是在另一塊地址中創(chuàng)建一個新的變量或容器,但是容器內(nèi)的元素的地址均是源對象的元素的地址的拷貝扑馁。也就是說新的容器中指向了舊的元素( 新瓶裝舊酒 )涯呻。

深拷貝

深拷貝,完全拷貝了一個副本腻要,容器內(nèi)部元素地址都不一樣

>>> from copy import deepcopy
>>> a=['hello',[1,2,3]]
>>> b=deepcopy(a)
>>> [id(x) for x in a]
[55792504, 55645000]
>>> [id(x) for x in b]
[55792504, 58338824]
>>> a[0]='world'
>>> a[1].append(4)
>>> 
>>> print(a)
['world', [1, 2, 3, 4]]
>>> print(b)
['hello', [1, 2, 3]]

這里可以看出复罐,深拷貝后,a和b的地址以及a和b中的元素地址均不同雄家,這是完全拷貝的一個副本效诅,修改a后,發(fā)現(xiàn)b沒有發(fā)生任何改變,因為b是一個完全的副本乱投,元素地址與a均不同咽笼,a修改不影響b。

深拷貝是在另一塊地址中創(chuàng)建一個新的變量或容器戚炫,同時容器內(nèi)的元素的地址也是新開辟的剑刑,僅僅是值相同而已,是完全的副本双肤。也就是說( 新瓶裝新酒 )施掏。

舊式類和新式類:

?新式類都從object繼承,經(jīng)典類不需要杨伙。

?新式類的MRO(method resolution order 基類搜索順序)算法采用C3算法廣度優(yōu)先搜索其监,而舊式類的MRO算法是采用深度優(yōu)先搜索

?新式類相同父類只執(zhí)行一次構(gòu)造函數(shù),經(jīng)典類重復(fù)執(zhí)行多次限匣。

其中:

?截止到python2.1抖苦,只存在舊式類。舊式類中米死,類名和type是無關(guān)的:如果x是一個舊式類锌历,那么x.class定義了x的類名,但是type(x)總是返回<type 'instance'>峦筒。這反映了所有的舊式類的實例是通過一個單一的叫做instance的內(nèi)建類型來實現(xiàn)的究西,這是它和類不同的地方。

?新式類是在python2.2為了統(tǒng)一類和實例引入的物喷。一個新式類只能由用戶自定義卤材。如果x是一個新式類的實例,那么type(x)和x.class是一樣的結(jié)果(盡管這不能得到保證峦失,因為新式類的實例的class方法是允許被用戶覆蓋的)扇丛。

?Python 2.x中默認(rèn)都是經(jīng)典類,只有顯式繼承了object才是新式類

?Python 3.x中默認(rèn)都是新式類,經(jīng)典類被移除尉辑,不必顯式的繼承object

Python2.x中:

1.  class A:  
2.  pass  
3.  class B:  
4.  pass  
5.  class C(B):  
6.  pass  
7.  class D(C,A):  
8.  pass  

執(zhí)行順序為:D->C->B,->A

python3:

1.  class A(object):  
2.  pass  
3.  class B(object):  
4.  pass  
5.  class C(object):   
6.  pass  
7.  class D(A,B,C):   
8.  pass  

執(zhí)行順序為: D->A->B->C->Object

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末帆精,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子隧魄,更是在濱河造成了極大的恐慌卓练,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件购啄,死亡現(xiàn)場離奇詭異襟企,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)闸溃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門整吆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拱撵,“玉大人辉川,你說我怎么就攤上這事表蝙。” “怎么了乓旗?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵府蛇,是天一觀的道長。 經(jīng)常有香客問我屿愚,道長汇跨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任妆距,我火速辦了婚禮穷遂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘娱据。我一直安慰自己蚪黑,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布中剩。 她就那樣靜靜地躺著忌穿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪结啼。 梳的紋絲不亂的頭發(fā)上掠剑,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機(jī)與錄音郊愧,去河邊找鬼朴译。 笑死,一個胖子當(dāng)著我的面吹牛属铁,可吹牛的內(nèi)容都是我干的眠寿。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼红选,長吁一口氣:“原來是場噩夢啊……” “哼澜公!你這毒婦竟也來了挟裂?” 一聲冷哼從身側(cè)響起标锄,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤固阁,失蹤者是張志新(化名)和其女友劉穎鹅经,沒想到半個月后醇疼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奏属,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡创千,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年蔑舞,在試婚紗的時候發(fā)現(xiàn)自己被綠了间学。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片殷费。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡印荔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出详羡,到底是詐尸還是另有隱情仍律,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布实柠,位于F島的核電站水泉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏窒盐。R本人自食惡果不足惜草则,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蟹漓。 院中可真熱鬧炕横,春花似錦、人聲如沸葡粒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽塔鳍。三九已至伯铣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間轮纫,已是汗流浹背腔寡。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留掌唾,地道東北人放前。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像糯彬,于是被迫代替她去往敵國和親凭语。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容