日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python init self_转载--------Python中:self和__init__的含义 + 为何要有self和__init__

發(fā)布時(shí)間:2023/12/19 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python init self_转载--------Python中:self和__init__的含义 + 为何要有self和__init__ 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

背景

Python中的self,__init__的含義是啥?為何要有self,__init這些東西?

解釋之前,先說(shuō)幾句

1.到目前為止,我雖然也已寫(xiě)了不算很少的python的代碼,但是,還真的沒(méi)有太多接觸self和__init__這兩個(gè)東西。只能算是大概了解。

2.為了搞懂其含義,現(xiàn)學(xué)現(xiàn)賣,去看了些資料,然后整理出來(lái)。其中,很可能理解有誤,還請(qǐng)高手指正。

3.解釋含義之前,先說(shuō)說(shuō)對(duì)于學(xué)習(xí)Python中的self和__init__等內(nèi)容的態(tài)度:

個(gè)人的建議是,很多東西,等你有了需求了,再去使用,該東西才算有價(jià)值,你也才會(huì)更容易理解;否則,暫時(shí)接觸不到的話,其實(shí)可以將其放到一邊,等以后遇到了再說(shuō)。

否則,現(xiàn)在就去努力的學(xué),態(tài)度雖好,但是由于沒(méi)有相關(guān)的編程實(shí)踐,即沒(méi)有足夠的代碼的練習(xí),對(duì)于概念的理解,必然很難深入。

因此,對(duì)于Python中的self和__init__的建議是:

如果你去寫(xiě)Python代碼,去學(xué)習(xí)Python的過(guò)程中,在沒(méi)有遇到之前,

比如像我這種,一直就沒(méi)怎么編寫(xiě)過(guò)真正的類(Class),那么倒也是可以暫時(shí)不用太理會(huì)這些東西;等以后需要編寫(xiě)類的時(shí)候,再去詳細(xì)學(xué)習(xí),了解,搞懂其含義。

4.下面的內(nèi)容,算是為你,的確遇到了self,__init__,的時(shí)候,需要理解其含義的時(shí)候,提供一些參考。

5.在看下面的解釋之前,你首先要對(duì)類(Class)和類的實(shí)例化的對(duì)象(Object,也稱實(shí)例Instance)的概念,有所了解。

如果不了解,可以參考我總結(jié)的:

python中self和__init__的含義 + 為何要有self和__init__

1. Python中的self

在Python中的類Class的代碼中,常看到函數(shù)中的第一個(gè)參數(shù),都是self。

以及Class中的函數(shù)里面,訪問(wèn)對(duì)應(yīng)的變量(讀取或者寫(xiě)入),以及調(diào)用對(duì)應(yīng)的函數(shù)時(shí),都是self.valueName,self.function()的形式。

下面就來(lái)解釋一下self的含義:

Python中self的含義

self,英文單詞意思很明顯,表示自己,本身。

此處有幾種潛在含義:

1.這里的自己,指的是,實(shí)例Instance本身。

2.同時(shí), 由于說(shuō)到“自己”這個(gè)詞,都是和相對(duì)而言的“其他”而說(shuō)的。而此處的其他,指的是:類Class與其他變量(比如局部變量,全局變量)等。

此處的self,是個(gè)對(duì)象,Object。是當(dāng)前類的實(shí)例。因此,對(duì)應(yīng)的self.valueName,self.function()中的

valueName:表示self對(duì)象,即實(shí)例的變量。與其他的,Class的變量,全局的變量,局部的變量,是相對(duì)應(yīng)的。

function:表示是調(diào)用的是self對(duì)象,即實(shí)例的函數(shù)。與其他的全局的函數(shù),是相對(duì)應(yīng)的。

2.Python中為何要有self

上面其實(shí)已經(jīng)基本上說(shuō)清楚了,為何需要有self。

那就是:

在類的代碼(函數(shù))中,需要訪問(wèn)當(dāng)前的實(shí)例中的變量和函數(shù)的,即,訪問(wèn)Instance中的:

對(duì)應(yīng)的變量(property):Instance.ProperyNam,去讀取之前的值和寫(xiě)入新的值

調(diào)用對(duì)應(yīng)函數(shù)(function):Instance.function(),即執(zhí)行對(duì)應(yīng)的動(dòng)作

-> 而需要訪問(wèn)實(shí)例的變量和調(diào)用實(shí)例的函數(shù),當(dāng)然需要對(duì)應(yīng)的實(shí)例Instance對(duì)象本身

-> 而Python中就規(guī)定好了,函數(shù)的第一個(gè)參數(shù),就必須是實(shí)例對(duì)象本身,并且建議,約定俗成,把其名字寫(xiě)為self

-> 所以,我們需要self(需要用到self)

而如果沒(méi)有用到self,即代碼中,去掉self后,那種寫(xiě)法所使用到的變量,實(shí)際上不是你所希望的,不是真正的實(shí)例中的變量和函數(shù),而是的訪問(wèn)到了其他部分的變量和函數(shù)了。

甚至?xí)捎跊](méi)有合適的初始化實(shí)例變量,而導(dǎo)致后續(xù)無(wú)法訪問(wèn)的錯(cuò)誤。

下面,就通過(guò)代碼,來(lái)演示,如果去掉self,或者沒(méi)有合理的使用self,會(huì)出現(xiàn)哪些錯(cuò)誤。

如果沒(méi)有在__init__中初始化對(duì)應(yīng)的實(shí)例變量的話,導(dǎo)致后續(xù)引用實(shí)例變量會(huì)出錯(cuò)

如下代碼,完整的演示了,如果沒(méi)有在類Class的最初的__init__函數(shù)中,正確的初始化實(shí)例變量,則會(huì)導(dǎo)致后續(xù)沒(méi)有變量可用,因而出現(xiàn)AttributeError的錯(cuò)誤:

從上述代碼可見(jiàn),由于在類的初始化(實(shí)例化)的__init__函數(shù)中,沒(méi)有給self.name設(shè)置值,使得實(shí)例中,根本沒(méi)有name這個(gè)變量,導(dǎo)致后續(xù)再去訪問(wèn)self.name,就會(huì)出現(xiàn)AttributeError的錯(cuò)誤了。

對(duì)應(yīng)的,如果寫(xiě)成self.name,則意思就正確了,就是初始化的時(shí)候,給實(shí)例中新增加,并且正常設(shè)置了正確的值newPersionName了,所以后續(xù)再去通過(guò)self.name,就可以訪問(wèn)到,當(dāng)前實(shí)例中正確的變量name了。

相應(yīng)的正確寫(xiě)法的代碼如下:

在函數(shù)中,使用對(duì)應(yīng)的變量,雖然代碼是可以運(yùn)行的,但是實(shí)際上卻是使用的,不是實(shí)例中的變量

有時(shí)候,雖然你寫(xiě)的代碼,可以運(yùn)行,但是使用到的變量,由于沒(méi)有加self,實(shí)際上是用到的不是實(shí)例的變量,而是其他的變量(有可能是類變量)。

此類問(wèn)題,主要和Python中的變量的作用域有關(guān),但是此處例子中,也和是否使用self有關(guān):

其中,可見(jiàn),此處開(kāi)始__init__中,沒(méi)有給self實(shí)例初始化對(duì)應(yīng)的name

而后面的函數(shù)sayYourName中,雖然可以調(diào)用到self.name而沒(méi)有出現(xiàn)AttributeError錯(cuò)誤

但是實(shí)際上此處的值,不是所期望的,傳入的name,即"crifan",而是類中的name的值,即"class global name"。

關(guān)于Python中變量的作用域的詳細(xì)解釋,可參考:

3.Python中的__init__

Python中,常會(huì)看到,很多類中,都有一個(gè)__init__函數(shù)。

下面就來(lái)解釋一下,__init__的含義。

Python中__init__的含義

首先來(lái)看init單詞本身,其含義是 初始化。

而__init__的含義,也如同其單詞本意一樣,用來(lái)初始化。

但是給誰(shuí)初始化呢?

很明顯,是給對(duì)應(yīng)的類Class本身,去初始化。

Python中為何要有__init__

我的理解是,__init__的出現(xiàn),主要有兩方面的作用:

一般常見(jiàn)的初始化,我的理解,可能主要有兩方面:

支持帶參數(shù)的類的初始化

這個(gè)用法,感覺(jué)就像,其他語(yǔ)言中的,對(duì)于Class初始化時(shí),可以運(yùn)行傳遞不同的參數(shù)一樣;

用代碼演示如下:

其中,就是針對(duì)Person這個(gè)類,

不同的示例,在初始化的時(shí)候,都傳遞一個(gè)對(duì)應(yīng)的參數(shù),這樣不同的Person,就都有了自己的不同的名字了。

這個(gè),至少看起來(lái),有點(diǎn)類似于,其他語(yǔ)言中的,傳遞特定參數(shù)去對(duì)類進(jìn)行初始化。

實(shí)現(xiàn)類本身相關(guān)內(nèi)容的初始化

當(dāng)一個(gè)Class,稍微復(fù)雜一點(diǎn)的時(shí)候,或者內(nèi)部函數(shù)需要用得到的時(shí)候,往往都需要在,別人實(shí)例化你這個(gè)類之前,使用你這個(gè)類之前,做一些基本的,與自己的類有關(guān)的,初始化方面的工作。

而這部分工作,往往就放到__init__函數(shù)中去了。

換句話說(shuō),你要用人家的類(中的變量和函數(shù))之前,總要給人家一個(gè)機(jī)會(huì),做點(diǎn)準(zhǔn)備工作,然后才能為你服務(wù)吧。

這個(gè)概念,相對(duì)還是很好理解的,就不多贅述。

演示代碼就不用了,因?yàn)樯厦娴拇a,也可以算是這方面的例子了,不同的人,應(yīng)該有不同的名字,而給不同的人設(shè)置不同的名字,也是需要在調(diào)用sayYourName之前,就先初始化好的。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的python init self_转载--------Python中:self和__init__的含义 + 为何要有self和__init__的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 永久av在线 | 97伊人网| 美女爱爱爱 | 国产二级一片内射视频播放 | 免费观看国产精品 | 2018国产精品 | 体内精69xxxxxx | 日韩性大片 | 香港台湾日本三级大全 | 三级黄色视屏 | 免费日本在线 | 96久久久 | 中文字幕高清在线免费播放 | 天天操天| 摸大乳喷奶水www视频 | 免费观看在线播放 | 日本免费在线观看 | 亚洲性大片 | 美痴女~美人上司北岛玲 | 嫩草一区| 日韩精品亚洲精品 | 成人中文字幕在线观看 | 末发成年娇小性xxxxx | 四虎国产成人永久精品免费 | 亚洲精品国产精品乱码不卡 | 琪琪色在线视频 | 久久精品99国产精品日本 | 在线播放少妇奶水过盛 | 色哟哟精品一区 | 日韩xx视频 | 激情四射婷婷 | 欧美色图综合网 | 特黄1级潘金莲 | 免费网站91| 青青草逼 | 午夜国产福利 | 开心激情亚洲 | av中字| 久久调教 | 91精品91久久久中77777 | 中文字幕日本一区二区 | 国产第一区第二区 | 国产午夜精品理论片 | 69精品久久久久久久 | 催眠调教艳妇成肉便小说 | 国产成人精品免费视频 | 成人精品一区二区三区 | 久久精品视频偷拍 | 蜜臀国产AV天堂久久无码蜜臀 | 久久免费精品国产 | 999国产在线| 国产精品一区二区久久 | 国产精品扒开腿做爽爽爽男男 | 精久久久久久久 | www久久久久 | 求欧美精品网址 | 高h喷汁呻吟3p | 波多野结衣电影免费观看 | 杨幂国产精品一区二区 | 国产午夜精品一区二区理论影院 | 97影院手机版 | 欧美一级片黄色 | 久久综合精品国产二区无码不卡 | 午夜怡红院 | 五月激情综合网 | 欧美三级一区 | 少妇激情偷人三级 | 91丨九色丨蝌蚪丨丝袜 | julia一区 | 亚洲乱码国产乱码精品精剪 | 婷婷六月激情 | 广州毛片| 亲嘴扒胸摸屁股激烈网站 | 国产精品一区av | 大奶子在线 | 欧美区在线观看 | 男女午夜爽爽爽 | 国产无遮挡a片又黄又爽 | 69pao| 久久亚洲综合色图 | 欧美成人黑人猛交 | 欧美激情精品久久久久 | 91亚洲国产成人久久精品网站 | 日韩三级视频在线观看 | 国产青青在线 | china国产乱xxxxx绿帽 | 国产人妻人伦精品1国产盗摄 | yy77777丰满少妇影院 | 97超级碰碰人妻中文字幕 | 99色热| 亚洲一区在线电影 | 91麻豆精品国产91久久久无需广告 | 久久亚洲私人国产精品va | 久久午夜一区 | 香蕉在线观看视频 | 极品少妇xxxx精品少妇偷拍 | 青草福利 | 黑人玩弄人妻一区二区三区 | 在线超碰av |