新聞中心
這里有您想知道的互聯(lián)網營銷解決方案
創(chuàng)新互聯(lián)Python教程:Python新手常見問題二:不正確的使用類變量
不正確的使用類變量

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


咨詢
建站咨詢
