Python中 __init__的通俗解釋是什么?
可能大家常常會(huì)在面向?qū)ο缶幊讨锌吹絖_init__,而且?guī)缀趺總€(gè)類(lèi)中都會(huì)有,它的作用都是是什么呢?
要想明白__init__,你首先要弄清楚面向?qū)ο笫鞘裁?
Python是一門(mén)面向?qū)ο蟮木幊陶Z(yǔ)言,面向?qū)ο笫且环N代碼封裝的技術(shù),包含了各種功能,讓代碼能重復(fù)利用、高效節(jié)能。
我們通過(guò)class來(lái)定義類(lèi),類(lèi)又包含了屬性、方法等,屬性是類(lèi)里面的變量,方法是類(lèi)里面的函數(shù)
而__init__就是其中一種函數(shù),叫做構(gòu)造函數(shù)。
def __init__(self, ):
代碼塊
每次創(chuàng)建類(lèi)的實(shí)例對(duì)象時(shí),__init__函數(shù)就會(huì)自動(dòng)被調(diào)用,無(wú)論它里面有什么樣的變量、計(jì)算,統(tǒng)統(tǒng)會(huì)自動(dòng)調(diào)用。
可能你又會(huì)問(wèn)實(shí)例對(duì)象是什么?其實(shí)我們可以把類(lèi)比作一張建筑圖紙,而實(shí)例對(duì)象是建造的房子,房子的所有功能都是根據(jù)圖紙來(lái)設(shè)計(jì)的。
理解__init__函數(shù)需要搞清楚以下三點(diǎn):
- 帶有兩個(gè)下劃線(xiàn)開(kāi)頭的函數(shù)是聲明該屬性為私有,不能在類(lèi)地外部被使用或直接訪問(wèn)
- init函數(shù)(方法)支持帶參數(shù)的類(lèi)的初始化 ,也可為聲明該類(lèi)的屬性
- init函數(shù)(方法)的第一個(gè)參數(shù)必須是 self(self為習(xí)慣用法,也可以用別的名字),后續(xù)參數(shù)則可 以自由指定,和定義函數(shù)沒(méi)有任何區(qū)別。
# 不帶參數(shù)
class Sample:
def __init__(self):
print("自動(dòng)調(diào)用構(gòu)造方法")
# 定義了一個(gè)實(shí)例屬性
self.name = "小明"
test = Sample()
print(test.name)
# 輸出結(jié)果
自動(dòng)調(diào)用構(gòu)造方法
小明
如上,在創(chuàng)建 test這個(gè)對(duì)象時(shí),隱式調(diào)用了手動(dòng)創(chuàng)建的__init__()構(gòu)造方法。
構(gòu)造函數(shù)__init__為什么會(huì)存在?
顧名思義,就像房子必須有地基、框架、大梁一樣,是房子的基礎(chǔ),實(shí)例對(duì)象也需要有的構(gòu)造的基礎(chǔ),這就是構(gòu)造函數(shù)的作用,給實(shí)例對(duì)象最原始的屬性。
所以綜上,構(gòu)造方法__init__用于創(chuàng)建實(shí)例對(duì)象時(shí)使用,每當(dāng)創(chuàng)建一個(gè)類(lèi)的實(shí)例對(duì)象時(shí),Python 解釋器都會(huì)自動(dòng)調(diào)用它,用來(lái)初始化對(duì)象的某些屬性。