中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

從零學Python之引用和類屬性的初步理解
來源:易賢網(wǎng) 閱讀:1459 次 日期:2014-05-19 20:19:02
溫馨提示:易賢網(wǎng)小編為您整理了“從零學Python之引用和類屬性的初步理解”,方便廣大網(wǎng)友查閱!

Python是一種解釋型、面向?qū)ο蟆討B(tài)數(shù)據(jù)類型的高級程序設計語言。自從20世紀90年代初Python語言誕生至今,它逐漸被廣泛應用于處理系統(tǒng)管理任務和Web編程。Python已經(jīng)成為最受歡迎的程序設計語言之一。2011年1月,它被TIOBE編程語言排行榜評為2010年度語言。自從2004年以后,python的使用率是呈線性增長。

Python在設計上堅持了清晰劃一的風格,這使得Python成為一門易讀、易維護,并且被大量用戶所歡迎的、用途廣泛的語言。

鑒于以上各種優(yōu)點,忍不住對Python進行了一番學習,略有收獲,分享給大家。

最近對Python的對象引用機制稍微研究了一下,留下筆記,以供查閱。

首先有一點是明確的:「Python中一切皆對象」。

那么,這到底意味著什么呢?

如下代碼:

代碼如下:

#!/usr/bin/envpython

a=[0,1,2]#來個簡單的list

#最初,list和其中各個元素的id是這樣的。

print'origin'

printid(a),a

forxina:

printid(x),x

print'----------------------'

#我們把第一個元素改改

print'afterchangea[0]'

a[0]=4

printid(a),a

forxina:

printid(x),x

print'----------------------'

#我們再把第二個元素改改

print'afterchangea[1]'

a[1]=5

printid(a),a

forxina:

printid(x),x

print'----------------------'

#回頭看看直接寫個0,id是多少

print'howaboutconst0?'

printid(0),0

運行結(jié)果如下:

代碼如下:

PastgiftMacbookPro:pythonpastgift$./refTest.py

Origin

[0,1,2]

0

1

2

----------------------

afterchangea[0]

[4,1,2]

4

1

2

----------------------

afterchangea[1]

[4,5,2]

4

5

2

----------------------

howaboutconst0?

0

從「Origin」部分來看,list中各個元素的地址之間都正好相差24,依次指向各自的數(shù)據(jù)——這讓我想到了數(shù)組。

當修改a[0]的值之后,發(fā)現(xiàn),a[0]的地址發(fā)生了變化。也就是說,賦值語句實際上只是讓a[0]重新指向另一個對象而已。此外,還注意到,a[0]的地址和a[2]的地址相差48(2個24)。

當再次修改a[1]之后,同樣地,a[1]的地址也發(fā)生變化,有趣的是,這次a[1]的地址和a[0]的地址又相差24,和原先的a[2]相差72(3個24)。

最后,當直接把數(shù)字0的地址打印出來后,發(fā)現(xiàn)它的地址和最開始的a[0]的地址完全一樣。

至此,基本可以說明,就算是list中的元素,其實也是引用。修改list中的元素,實際上還是在修改引用而已。

對于Python中類屬性,有人提到過「類屬性在同一類及其子類之間共享,修改類屬性會影響到同一類及其子類的所有對象」。

聽著挺嚇人,但仔細研究之后,其實倒也不是什么大不了的事情。

如下代碼:

代碼如下:

#!/usr/bin/envpython

classBird(object):

name='bird'

talent=['fly']

classChicken(Bird):

pass

bird=Bird();

bird2=Bird();#同類實例

chicken=Chicken();#子類實例

#最開始是這樣的

print'Originalattr'

printid(bird.name),bird.name

printid(bird.talent),bird.talent

printid(bird2.name),bird2.name

printid(bird2.talent),bird2.talent

printid(chicken.name),chicken.name

printid(chicken.talent),chicken.talent

print'----------------------------'

#換個名字看看

bird.name='birdnamechanged!'

print'afterchangingname'

printid(bird.name),bird.name

printid(bird.talent),bird.talent

printid(bird2.name),bird2.name

printid(bird2.talent),bird2.talent

printid(chicken.name),chicken.name

printid(chicken.talent),chicken.talent

print'----------------------------'

#洗個天賦試試(修改類屬性中的元素)

bird.talent[0]='walk'

print'afterchangingtalent(alist)'

printid(bird.name),bird.name

printid(bird.talent),bird.talent

printid(bird2.name),bird2.name

printid(bird2.talent),bird2.talent

printid(chicken.name),chicken.name

printid(chicken.talent),chicken.talent

print'----------------------------'

#換個新天賦樹(整個類屬性全換掉)

bird.talent=['swim']

print'afterreassigntalent'

printid(bird.name),bird.name

printid(bird.talent),bird.talent

printid(bird2.name),bird2.name

printid(bird2.talent),bird2.talent

printid(chicken.name),chicken.name

printid(chicken.talent),chicken.talent

print'----------------------------'

#洗掉新天賦樹(對新來的類屬性中的元素進行修改)

bird.talent[0]='dance'

print'changingelementafterreassigningtalent'

printid(bird.name),bird.name

printid(bird.talent),bird.talent

printid(bird2.name),bird2.name

printid(bird2.talent),bird2.talent

printid(chicken.name),chicken.name

printid(chicken.talent),chicken.talent

print'----------------------------'

運行結(jié)果:

代碼如下:

PastgiftMacbookPro:pythonpastgift$./changeAttributeTest.py

Originalattr

bird

['fly']

bird

['fly']

bird

['fly']

----------------------------

afterchangingname

birdnamechanged!

['fly']

bird

['fly']

bird

['fly']

----------------------------

afterchangingtalent(alist)

birdnamechanged!

['walk']

bird

['walk']

bird

['walk']

----------------------------

afterreassigntalent

birdnamechanged!

['swim']

bird

['walk']

bird

['walk']

----------------------------

changingelementafterreassigningtalent

birdnamechanged!

['dance']

bird

['walk']

bird

['walk']

----------------------------

在「Origin」的時候,同類對象,子類對象的相同類屬性的地址都是相同的——這就是所謂的「共享」。

修改name之后,只有被修改的對象name屬性發(fā)生變化。這是因為對name的賦值操作實際上就是換了一個字符串,重新引用。字符串本身并沒有發(fā)生變化。所以并沒有在同類和子類之間產(chǎn)生互相影響。

接下來,修改talent中的元素。這時,情況有所改變:同類及其子類的talent屬性都一起跟著變了——這很好理解,因為它們都引用的內(nèi)存地址都一樣,引用的是同一個對象。

再接下來,給talent重新賦值,也就是改成引用另外一個對象。結(jié)果是只有本實例的talent屬性變化了。從內(nèi)存地址可以看出,本實例和其他實例的talent屬性已經(jīng)不再指向相同的對象了。就是說「至此,本實例已經(jīng)是圈外人士了」。

那么,最后再次修改talent中元素后,對其他實例無影響的結(jié)果也是很好理解了。因為已經(jīng)是「圈外人士」了嘛,我再怎么折騰也都是自己的事情了。

所以,「類屬性在同類及其子類之間互相影響」必須有一個前提條件:實例建立后,其類屬性從來沒有被重新賦值過,即類屬性依然指向最初所指向的內(nèi)存地址。

最后提一下對象屬性

如下代碼:

代碼如下:

#!/usr/bin/envpython

classBird(object):

def__init__(self):

self.talent=['fly']

bird=Bird()

bird2=Bird()

#剛開始的情形

print'Origin'

printid(bird.talent),bird.talent

printid(bird2.talent),bird2.talent

print'--------------------'

#修改其中一個對象的屬性

bird.talent[0]='walk'

print'afterchangingattribute'

printid(bird.talent),bird.talent

printid(bird2.talent),bird2.talent

print'--------------------'

#作死:兩個對象的屬性指向同一個內(nèi)存地址,再修改

bird.talent=bird2.talent

bird.talent[0]='swim'

print'assigntoanotherattributeandchangeit'

printid(bird.talent),bird.talent

printid(bird2.talent),bird2.talent

print'--------------------'

運行結(jié)果:

代碼如下:

PastgiftMacbookPro:pythonpastgift$./changeAttributeTest2.py

Origin

['fly']

['fly']

--------------------

afterchangingattribute

['walk']

['fly']

--------------------

assigntoanotherattributeandchangeit

['swim']

['swim']

--------------------

由于對象屬性就算內(nèi)容完全一樣(剛初始化后的屬性內(nèi)容一般都是一樣的),也會分配到完全不同的內(nèi)存地址上去。所以不存在「同類對象之間影響」的情況。

但如果讓一個對象的屬性和另一個對象的屬性指向同一個地址,兩者之間(但也僅限兩者之間)便又互相牽連起來。

更多信息請查看IT技術專欄

更多信息請查看腳本欄目
易賢網(wǎng)手機網(wǎng)站地址:從零學Python之引用和類屬性的初步理解

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
欧美人牲a欧美精品| 国产精品青草久久| 亚洲黄色毛片| 国产欧美精品一区二区三区介绍 | 亚洲视频成人| 欧美一区二区高清在线观看| 欧美一区二区视频在线观看2020 | 国产精品videossex久久发布| 亚洲国产精品久久久久婷婷884| 黑人巨大精品欧美一区二区| 久久免费一区| 国产一区二区三区精品欧美日韩一区二区三区| 亚洲欧美国产va在线影院| 欧美香蕉大胸在线视频观看| 欧美一区二区三区视频| 在线看国产一区| 欧美日韩国语| 久久av最新网址| 亚洲日本成人网| 欧美日韩在线不卡| 欧美一区二区三区四区在线| 亚洲第一天堂av| 国产精品jvid在线观看蜜臀| 午夜欧美大片免费观看| 亚洲黄色在线视频| 国产精品久99| 欧美母乳在线| 狂野欧美一区| 亚洲自拍偷拍色片视频| 亚洲黄色有码视频| 国产亚洲日本欧美韩国| 欧美日韩精品久久久| 久久全国免费视频| 亚洲欧美bt| 亚洲精品综合| 国产一区视频观看| 欧美日本一道本| 蜜桃伊人久久| 久久久久一区二区三区四区| 午夜精品www| 国产精品99久久不卡二区| 亚洲国产精品久久久| 国产自产精品| 国产精品入口夜色视频大尺度| 欧美寡妇偷汉性猛交| 欧美一区二区三区视频在线观看 | 亚洲国产老妈| 国产一区二区日韩| 国产精品久久久久久久久| 欧美另类视频| 欧美日韩视频在线| 欧美色区777第一页| 欧美日韩国产电影| 欧美区二区三区| 欧美日韩精品免费观看视频完整| 免费观看30秒视频久久| 久久蜜桃香蕉精品一区二区三区| 久久精品二区三区| 久久精品国产欧美激情| 亚洲欧美成aⅴ人在线观看| 亚洲午夜极品| 午夜精品视频一区| 欧美一级久久| 久久人人爽国产| 久久在线免费| 欧美黄色免费网站| 欧美精品xxxxbbbb| 欧美日韩激情网| 国产精品毛片a∨一区二区三区| 国产精品久久久久久久午夜| 国产欧美va欧美va香蕉在| 国产欧美在线播放| 国产亚洲va综合人人澡精品| 国产一区二区激情| 在线播放日韩| 99热这里只有精品8| 亚洲特级片在线| 欧美影院成人| 欧美mv日韩mv国产网站| 欧美日韩在线一区二区| 国产精品视频区| 亚洲国产精品久久久| 99视频超级精品| 久久精品一区二区三区不卡牛牛| 久久综合伊人77777| 欧美三级网址| 国产一区二区三区在线播放免费观看| 韩日欧美一区| 亚洲桃花岛网站| 久久裸体艺术| 国产精品二区二区三区| 在线不卡a资源高清| 亚洲无吗在线| 免费在线成人| 国产日韩欧美在线播放| 日韩视频在线观看一区二区| 欧美在线观看一区二区| 欧美黑人在线观看| 国产一区二区观看| 亚洲午夜国产成人av电影男同| 久久精品99国产精品| 欧美久久电影| 在线观看成人小视频| 亚洲欧美日本另类| 欧美日韩精品久久久| 永久久久久久| 欧美一区二区免费视频| 亚洲国产精品综合| 久久久精品日韩欧美| 国产精品jizz在线观看美国| 影音先锋国产精品| 久久久之久亚州精品露出| 99v久久综合狠狠综合久久| 欧美高清视频| 欧美午夜一区| 亚洲人成啪啪网站| 国产精品伦理| 亚洲在线免费| 国产精品亚洲综合| 欧美一区日韩一区| 久久成年人视频| 牛夜精品久久久久久久99黑人| 国产日韩一级二级三级| 午夜老司机精品| 国产精品―色哟哟| 久久精品一二三区| 亚洲视频在线观看一区| 亚洲乱码国产乱码精品精天堂 | 欧美激情第4页| 黄色成人av在线| 亚洲国产日韩欧美在线99| 国产精品亚洲美女av网站| 欧美日韩国产不卡| 久热精品视频在线免费观看| 国产精品久久91| 亚洲欧美日韩中文视频| 欧美日韩国产区| 亚洲人成在线播放| 国产精品国产三级国产普通话蜜臀 | 久久成人免费网| 精品成人在线视频| 国产一区在线播放| 欧美日韩精品是欧美日韩精品| 99re热这里只有精品免费视频| 欧美日韩亚洲高清| 噜噜噜在线观看免费视频日韩 | 欧美大片一区二区| 亚洲国产成人精品久久| 国产欧美日本| 欧美—级在线免费片| 久久午夜视频| 久久精品一二三区| 欧美日韩福利在线观看| 国产一区亚洲一区| 国产亚洲欧美aaaa| 亚洲小说区图片区| 国产日韩av高清| 久热精品在线视频| 亚洲精品少妇网址| 国产精品丝袜白浆摸在线| 性高湖久久久久久久久| 好看的亚洲午夜视频在线| 免费亚洲电影在线| 一区二区三区日韩精品视频| 国产精品免费久久久久久| 久久精品亚洲精品国产欧美kt∨| 久久久久看片| 91久久久久久国产精品| 欧美日本不卡视频| 欧美一区二区三区视频| 国产精品婷婷| 亚洲视频中文| 久久成人精品| 美女主播一区| 一区二区三区欧美激情| 国产精品久久久免费| 久久久久久综合网天天| 亚洲精品视频免费观看| 国产情人综合久久777777| 久久久久久久久久看片| aⅴ色国产欧美| 国精产品99永久一区一区| 欧美日韩国产a| 久久精品系列| 亚洲制服丝袜在线| 亚洲日本在线视频观看| 国产欧美精品久久| 欧美日韩精品一区二区| 国产日韩亚洲欧美| 欧美日韩激情网| 免费久久99精品国产| 羞羞色国产精品| 欧美中文在线字幕| 国内精品伊人久久久久av一坑| 午夜欧美不卡精品aaaaa| 亚洲高清在线视频| 久久精品1区| 亚洲在线网站| 在线亚洲精品| 日韩一级免费|