新聞中心
不正確的使用類變量

創(chuàng)新互聯(lián)主要為客戶提供服務(wù)項(xiàng)目涵蓋了網(wǎng)頁(yè)視覺(jué)設(shè)計(jì)、VI標(biāo)志設(shè)計(jì)、營(yíng)銷推廣、網(wǎng)站程序開發(fā)、HTML5響應(yīng)式重慶網(wǎng)站建設(shè)公司、手機(jī)網(wǎng)站開發(fā)、微商城、網(wǎng)站托管及網(wǎng)站維護(hù)、WEB系統(tǒng)開發(fā)、域名注冊(cè)、國(guó)內(nèi)外服務(wù)器租用、視頻、平面設(shè)計(jì)、SEO優(yōu)化排名。設(shè)計(jì)、前端、后端三個(gè)建站步驟的完善服務(wù)體系。一人跟蹤測(cè)試的建站服務(wù)標(biāo)準(zhǔn)。已經(jīng)為石涼亭行業(yè)客戶提供了網(wǎng)站推廣服務(wù)。
看下面一個(gè)例子:
>>> class A(object): ... x = 1 ... >>> class B(A): ... pass ... >>> class C(A): ... pass ... >>> print A.x, B.x, C.x 1 1 1
相關(guān)推薦:《python視頻教程》
看起來(lái)沒(méi)有問(wèn)題。
>>> B.x = 2 >>> print A.x, B.x, C.x 1 2 1
嗯哈,還是和預(yù)想的一樣。
>>> A.x = 3 >>> print A.x, B.x, C.x 3 2 3
我了個(gè)去。只是改變了A.x,為啥C.x也變了?
在Python里,類變量通常在內(nèi)部被當(dāng)做字典來(lái)處理并遵循通常所說(shuō)的方法解析順序(Method Resolution Order (MRO))。因此在上面的代碼中,因?yàn)閷傩詘在類C中找不到,因此它會(huì)往上去它的基類中查找(在上面的例子中只有A這個(gè)類,當(dāng)然Python是支持多重繼承(multiple inheritance)的)。換句話說(shuō),C沒(méi)有它自己獨(dú)立于A的屬性x。因此對(duì)C.x的引用實(shí)際上是對(duì)A.x的引用。(B.x不是對(duì)A.x的引用是因?yàn)樵诘诙嚼顱.x=2將B.x引用到了2這個(gè)對(duì)象上,倘若沒(méi)有如此,B.x仍然是引用到A.x上的。)
相關(guān)推薦:
python新手常見問(wèn)題一:亂用表達(dá)式
當(dāng)前名稱:創(chuàng)新互聯(lián)Python教程:Python新手常見問(wèn)題二:不正確的使用類變量
當(dāng)前鏈接:http://www.5511xx.com/article/djisjsg.html


咨詢
建站咨詢
