__init__()是為了做初始化用的

伊春網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護(hù)。成都創(chuàng)新互聯(lián)從2013年創(chuàng)立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
我們初始化得時候不一定要使用__init__()進(jìn)行初始化,可以直接定義
比如
class?test(self):
test_a?=?"123"
這里就初始話了一個變量test_a = "123",但這樣就太固定
而__init__()的好處在于它可以接收參數(shù)并初始化
__init__(self,testa):
test_a = testa
這樣類就可以初始化話一個動態(tài)的變量,更加靈活
而且直接test("123")就將test_a 初始成123了
類是對象的模板,是抽象的。
構(gòu)造函數(shù) init 是Python魔術(shù)方法之一,如圖魔術(shù)方法
我們通過類模版去創(chuàng)建類的實例對象,然后再調(diào)用類定義的功能。
那實例對象的屬性是通過什么來初始化的?
這時候Python引入來構(gòu)造函數(shù) init
構(gòu)造函數(shù),會在創(chuàng)建實例對象之后Python會自動執(zhí)行此方法,把初始化的屬性特點放到實例對象里。
通過前面的學(xué)習(xí),我們知道一個python對象包含三個部分:id(識別碼),type(對象類型),value(對象的值)
那么我們進(jìn)一步深入對象包含的三部分:
我們通過類創(chuàng)建實例對象后,需要定義構(gòu)造函數(shù) init ()方法。
構(gòu)造方法用于執(zhí)行實例對象的初始化工作,即對象創(chuàng)建之后,初始化當(dāng)前對象的相關(guān)的屬性,無返回值
構(gòu)造函數(shù)重點 :
我們通過栗子來學(xué)習(xí)構(gòu)造函數(shù)的過程
構(gòu)造函數(shù)初始化實例對象過程如下:
1.Animal類會通過默認(rèn)的 new ()方法為實例對象在堆內(nèi)存中為開辟一個空間
敲黑板,重點來啦~
拓展:
我們今天學(xué)習(xí)了構(gòu)造函數(shù) init (),其在創(chuàng)建對象之后被Python自動調(diào)用初始化實例對象屬性數(shù)據(jù)值,無返回值,并且構(gòu)造函數(shù)不能被顯示調(diào)用。
創(chuàng)建對象時,如果需要,構(gòu)造函數(shù)可以接受參數(shù)。當(dāng)創(chuàng)建沒有構(gòu)造函數(shù)的類時,Python會自動創(chuàng)建一個不執(zhí)行任何操作的默認(rèn)構(gòu)造函數(shù)。
每個類必須有一個構(gòu)造函數(shù),即使它只依賴于默認(rèn)構(gòu)造函數(shù)
好啦,以上是本期內(nèi)容,歡迎大佬評論區(qū)指正~
Python中,__init__()方法是所謂的對象的“構(gòu)造函數(shù)”,負(fù)責(zé)在對象初始化時進(jìn)行一系列的構(gòu)建操作
假設(shè)有如下類:
class?worker:
pass
在Python中,對某個類實例進(jìn)行成員賦值,可以創(chuàng)建不存在的成員:
a=worker()
a.pay=55000
a.name='Bob'
如果對于每一個worker類的實例對象,都要進(jìn)行如此賦值的話,這個類會變得很難使用
另外,對于用于特殊場合的類,可能要求在對象創(chuàng)建時,進(jìn)行連接數(shù)據(jù)庫、連接FTP服務(wù)器、進(jìn)行API驗證等操作,這些初始化操作,都可以封裝在__init__()方法中進(jìn)行
__init__方法使用如下規(guī)則定義:
class?ex:
def?__init__(self):
pass
__init__方法必須接受至少一個參數(shù)即self,Python中,self是指向該對象本身的一個引用,通過在類的內(nèi)部使用self變量,類中的方法可以訪問自己的成員變量,簡單來說,self.varname的意義為”訪問該對象的varname屬性“
當(dāng)然,__init__()中可以封裝任意的程序邏輯,這是允許的,__init__()方法還接受任意多個其他參數(shù),允許在初始化時提供一些數(shù)據(jù),例如,對于剛剛的worker類,可以這樣寫:
class?worker:
def?__init__(self,name,pay):
self.name=name
self.pay=pay
這樣,在創(chuàng)建worker類的對象時,必須提供name和pay兩個參數(shù):
b=worker('Jim',5000)
Python會自動調(diào)用worker.__init__()方法,并傳遞參數(shù)。
通常情況下,self形參由Python自動賦值,但是,在類繼承中,并不是這樣
例如,Python的HTML處理工具HTMLParser,是一個基于OOP模型的工具,要使用該工具,必須編寫一個類,繼承html.parser.HTMLParser類,并重載一系列方法,以定制自己的功能
from?html.parser.HTMLParser
class?ex2(HTMLParser):
def?__init__(self):
HTMLParser.__init__(self)
此處,需要調(diào)用了HTMLParser類的__init__方法,而且,此處手動給HTMLParser.__init__()方法的self形參賦值,事實上,如果不顯式指定self形參的值,Python不會在此處自動為HTMLParser.__init__()方法的self形參進(jìn)行賦值
如此設(shè)計的原因是,在子類中需要獲得超類的成員和方法,而通過在子類的__init__方法中調(diào)用超類的__init__方法,并手動給它傳遞指向子類的self值,可以使超類的__init__方法將所初始化的變量設(shè)置成子類的變量,這樣,就可以在子類中直接訪問超類的變量了。
python中的__init__()時類的初始化函數(shù),比如:
class?Obj:
def?__init__():
print?1
obj?=?Obj()?#這時候調(diào)用__init__這個方法
如果解決了您的問題請采納!
如果未解決請繼續(xù)追問
問:對于python中的初始化init這個怎么理解啊?
答:相當(dāng)于類的構(gòu)造函數(shù),用來初始化變量等。
問: param = self._args['receiving'].replace("\\'", "'")這一句是啥意思啊?還有addReceiving(self)中self到底是什么啊?
答:在對class進(jìn)行調(diào)用的過程中,會首先執(zhí)行__init__這個構(gòu)造函數(shù),可以看到在構(gòu)造函數(shù)中,對_args進(jìn)行了賦值,在python中"_"一般代表這個參數(shù)是private的。
問:我的理解是args是LogisticsService類的一個屬性,addReceiving(self)方法中的參數(shù)self就是LogisticsService類中的args。求大神指導(dǎo)!!
答:大神來了,args是一個字典類型,是LogisticsService的在init初始化的一個字段。
大神做到底,再給你個示例,你琢磨一下
Python中“__init__”的意義是在類實例創(chuàng)建的時候自動會被執(zhí)行的。這里只是自己重定義了__init__的行為。
如果一個函數(shù)在內(nèi)部不調(diào)用其它的函數(shù),而是自己本身的話,這個函數(shù)就是遞歸函數(shù)。遞歸函數(shù)的作用。
根據(jù)下面的階乘來看下規(guī)律,通過規(guī)律進(jìn)行程序的編寫,可以達(dá)到事半功倍的效果;
看階乘的規(guī)律。
根據(jù)上一步驟,得到遞歸函數(shù)的通用表達(dá)式。
用lambda關(guān)鍵詞能創(chuàng)建小型匿名函數(shù)。這種函數(shù)得名于省略了用def聲明函數(shù)的標(biāo)準(zhǔn)步驟。
網(wǎng)站標(biāo)題:init函數(shù)python init函數(shù)java
瀏覽地址:http://chinadenli.net/article20/hepico.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站改版、品牌網(wǎng)站設(shè)計、域名注冊、網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)