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

從零學(xué)python之引用和類屬性的初步理解
來源:易賢網(wǎng) 閱讀:1210 次 日期:2016-06-30 09:50:21
溫馨提示:易賢網(wǎng)小編為您整理了“從零學(xué)python之引用和類屬性的初步理解”,方便廣大網(wǎng)友查閱!

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

python在設(shè)計(jì)上堅(jiān)持了清晰劃一的風(fēng)格,這使得python成為一門易讀、易維護(hù),并且被大量用戶所歡迎的、用途廣泛的語言。

鑒于以上各種優(yōu)點(diǎn),忍不住對(duì)python進(jìn)行了一番學(xué)習(xí),略有收獲,分享給大家。

最近對(duì)python的對(duì)象引用機(jī)制稍微研究了一下,留下筆記,以供查閱。

首先有一點(diǎn)是明確的:「python中一切皆對(duì)象」。

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

如下代碼:

代碼如下:

#!/usr/bin/envpython

a=[0,1,2]#來個(gè)簡(jiǎn)單的list

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

print'origin'

printid(a),a

forxina:

printid(x),x

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

#我們把第一個(gè)元素改改

print'afterchangea[0]'

a[0]=4

printid(a),a

forxina:

printid(x),x

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

#我們?cè)侔训诙€(gè)元素改改

print'afterchangea[1]'

a[1]=5

printid(a),a

forxina:

printid(x),x

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

#回頭看看直接寫個(gè)0,id是多少

print'howaboutconst0?'

printid(0),0

運(yùn)行結(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中各個(gè)元素的地址之間都正好相差24,依次指向各自的數(shù)據(jù)——這讓我想到了數(shù)組。

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

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

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

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

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

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

如下代碼:

代碼如下:

#!/usr/bin/envpython

classbird(object):

name='bird'

talent=['fly']

classchicken(bird):

pass

bird=bird();

bird2=bird();#同類實(shí)例

chicken=chicken();#子類實(shí)例

#最開始是這樣的

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'----------------------------'

#換個(gè)名字看看

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'----------------------------'

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

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'----------------------------'

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

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'----------------------------'

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

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'----------------------------'

運(yùn)行結(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」的時(shí)候,同類對(duì)象,子類對(duì)象的相同類屬性的地址都是相同的——這就是所謂的「共享」。

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

接下來,修改talent中的元素。這時(shí),情況有所改變:同類及其子類的talent屬性都一起跟著變了——這很好理解,因?yàn)樗鼈兌家玫膬?nèi)存地址都一樣,引用的是同一個(gè)對(duì)象。

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

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

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

最后提一下對(duì)象屬性

如下代碼:

代碼如下:

#!/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'--------------------'

#修改其中一個(gè)對(duì)象的屬性

bird.talent[0]='walk'

print'afterchangingattribute'

printid(bird.talent),bird.talent

printid(bird2.talent),bird2.talent

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

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

bird.talent=bird2.talent

bird.talent[0]='swim'

print'assigntoanotherattributeandchangeit'

printid(bird.talent),bird.talent

printid(bird2.talent),bird2.talent

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

運(yùn)行結(jié)果:

代碼如下:

pastgiftmacbookpro:pythonpastgift$./changeattributetest2.py

origin

['fly']

['fly']

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

afterchangingattribute

['walk']

['fly']

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

assigntoanotherattributeandchangeit

['swim']

['swim']

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

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

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

更多信息請(qǐng)查看腳本欄目
易賢網(wǎng)手機(jī)網(wǎng)站地址:從零學(xué)python之引用和類屬性的初步理解
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2026上岸·考公考編培訓(xùn)報(bào)班

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
欧美成人一品| 国产欧美日韩一区二区三区在线 | 欧美成年视频| 午夜精品偷拍| 亚洲精品少妇网址| 亚洲二区在线视频| 精品不卡视频| 激情视频一区| 在线免费观看欧美| 影音先锋亚洲电影| 在线看欧美日韩| 亚洲高清不卡在线| 亚洲高清av在线| 亚洲三级免费观看| 99精品视频一区| 亚洲天堂网站在线观看视频| 一区二区三区 在线观看视| 一区二区日韩伦理片| 中国亚洲黄色| 午夜视频在线观看一区| 欧美综合激情网| 久久中文字幕一区| 欧美风情在线| 狠狠色狠狠色综合日日91app| 久久综合伊人77777麻豆| 亚洲欧美视频在线观看| 亚洲一区二区三区影院| 99热免费精品在线观看| 欧美亚洲一级| 亚洲影视九九影院在线观看| 中日韩美女免费视频网址在线观看| 日韩一区二区电影网| 中日韩美女免费视频网站在线观看| 夜夜嗨av一区二区三区四区| 亚洲一区二区伦理| 欧美亚洲在线| 久久亚洲综合色| 欧美日韩国产bt| 国产精品无码永久免费888| 国产手机视频精品| 伊人激情综合| 一本久道久久综合婷婷鲸鱼| 亚洲欧洲av一区二区| 久久久久一区二区三区| 欧美国产一区在线| 国产精品一区二区你懂的| 好吊成人免视频| 一本色道久久综合亚洲精品小说| 先锋影音网一区二区| 蜜臀av国产精品久久久久| 欧美日韩一区二区三区视频| 国产精品美女久久久| 亚洲二区精品| 欧美在线播放| 欧美女主播在线| 国际精品欧美精品| 中日韩在线视频| 国产精品美女在线| 韩国三级在线一区| 亚洲一区免费视频| 欧美二区在线| 激情五月婷婷综合| 亚洲欧美一区二区三区极速播放 | 国产精品夜色7777狼人| 亚洲国产精品成人综合色在线婷婷| 这里只有精品在线播放| 久热这里只精品99re8久| 国产精品高潮呻吟久久av无限| 一区二区三区自拍| 性色一区二区三区| 欧美色欧美亚洲另类七区| 狠狠干综合网| 亚洲欧美文学| 欧美日一区二区三区在线观看国产免| 一区二区在线观看视频在线观看| 午夜精品久久久久久久白皮肤 | 午夜精品亚洲一区二区三区嫩草| 欧美成人乱码一区二区三区| 国模精品一区二区三区色天香| 亚洲伊人色欲综合网| 欧美日韩八区| 亚洲精品国产精品国产自| 老司机免费视频一区二区| 亚洲日本一区二区| 久久综合一区| 激情综合色综合久久综合| 久久精品一区二区国产| 国产视频一区在线| 欧美一区二区在线看| 国产欧美在线播放| 欧美中文字幕在线视频| 欧美激情一区二区在线| 亚洲影音一区| 亚洲中无吗在线| 亚洲女人天堂成人av在线| 一本色道久久综合狠狠躁的推荐| 依依成人综合视频| 国产在线日韩| 狠狠色狠狠色综合日日五| 国产亚洲毛片在线| 国产精品黄页免费高清在线观看| 欧美激情区在线播放| 欧美精品三级日韩久久| 欧美日韩国产首页| 国产午夜精品麻豆| 国产精品久久久久三级| 欧美日韩亚洲三区| 国内视频精品| 亚洲精品中文字| 欧美精品日韩精品| 国产精品乱人伦中文| 在线观看国产精品淫| 一区二区三区视频观看| 午夜精品在线| 亚洲欧美日韩一区二区三区在线观看 | 日韩视频在线观看国产| 久久久欧美精品sm网站| 黄色日韩精品| 欧美精品色一区二区三区| 亚洲网站在线看| 国产亚洲精品高潮| 欧美国产激情二区三区| 夜夜爽99久久国产综合精品女不卡| 国产精品乱码妇女bbbb| 欧美在线视频一区| 亚洲黄色在线观看| 国产精品无码永久免费888| 久久高清福利视频| 日韩写真视频在线观看| 欧美精品日韩精品| 国产三级欧美三级日产三级99| 日韩亚洲欧美成人一区| 媚黑女一区二区| 亚洲亚洲精品在线观看 | 国产精品国产a级| 亚洲欧洲一区二区三区| 欧美一区综合| 国产精品毛片在线| 亚洲丝袜av一区| 国产精品露脸自拍| 欧美在线高清视频| 好吊日精品视频| 理论片一区二区在线| 国产精品入口福利| 韩国三级在线一区| 一区二区激情| 久久精品视频导航| 蜜臀99久久精品久久久久久软件| 国产精品一区二区视频| 99精品视频免费观看| 国产日韩在线播放| 亚洲高清一区二区三区| 国产日韩欧美三级| 男人插女人欧美| 欧美在线一二三区| 亚洲午夜激情| 99精品久久久| 亚洲人成网站777色婷婷| 国外成人免费视频| 国产欧美精品xxxx另类| 国产精品vvv| 欧美精品九九99久久| 老司机aⅴ在线精品导航| 久久成人人人人精品欧| 亚洲摸下面视频| 亚洲视频国产视频| 一区二区三区欧美日韩| 亚洲日韩中文字幕在线播放| 永久久久久久| 韩日成人av| 狠狠色综合色综合网络| 国产精品xxxxx| 欧美视频中文字幕在线| 欧美日韩国产一中文字不卡 | 欧美日本久久| 女生裸体视频一区二区三区| 久久久免费观看视频| 久久久www成人免费无遮挡大片| 欧美一区二区三区四区在线观看| 亚洲欧美国产77777| 亚洲影音一区| 亚洲欧美一区二区三区极速播放| 亚洲影音一区| 久久都是精品| 久久av在线| 久久网站免费| 欧美91大片| 欧美日韩系列| 欧美性片在线观看| 国产麻豆日韩| 精品9999| 日韩亚洲一区二区| 亚洲免费在线视频| 久久久精品五月天| 欧美高潮视频| 国产精品观看| 悠悠资源网久久精品| 亚洲精品久久久一区二区三区| 99热在线精品观看| 欧美亚洲在线播放|