前后都加雙下劃綫的方法在python中是獨(dú)一無(wú)二的,加下劃線的目的在于避免與普通方法名稱(chēng)沖突。
本文中主要深入理解在定義類(lèi)的時(shí)候必須用到的__init__方法。
在進(jìn)行詳細(xì)敘述之前,給大家普及一下,類(lèi)中的方法和屬性。
- 方法:也就是各類(lèi)中定義的函數(shù),比如我們定義一個(gè)車(chē)的類(lèi),描述車(chē)的函數(shù)就是一個(gè)方法。
- 屬性:車(chē)的品牌、型號(hào)、生產(chǎn)日期等信息就是它的屬性
1、__init__方法:無(wú)需直接調(diào)用,生成實(shí)例對(duì)象的時(shí)候自動(dòng)調(diào)用。
“init”的全稱(chēng)是“initialize”,也就是初始化的意思,所以__init__又稱(chēng)構(gòu)造方法。
在定義類(lèi)的時(shí)候__init__()方法是必不可少的。
init()這種初始化方法,用來(lái)初始化新創(chuàng)建對(duì)象的屬性,在一個(gè)對(duì)象被創(chuàng)建以后會(huì)立即調(diào)用,比如像實(shí)例化一個(gè)類(lèi):
demo
class
Car
(
)
:
def
__init__
(
self
,
make
,
model
,
year
)
:
###
self
.
make
=
make
self
.
model
=
model
self
.
year
=
year
my_car
=
Car
(
'aodi'
,
'A4'
,
'2010'
)
print
(
my_car
.
model
)
aodi
程序中沒(méi)有直接調(diào)用__init__方法,但make,model,year等屬性通過(guò)Car()類(lèi)自動(dòng)調(diào)用了__init__方法,生成了屬性。
2、self參數(shù)
“self”的英文意思很明顯,是自己的意思。
這里自己隱含的含義是
-
指的是,實(shí)例Instance本身。
-
同時(shí), 由于說(shuō)到“自己”這個(gè)詞,都是和相對(duì)而言的“其他”而說(shuō)的;而此處的其他,指的是,類(lèi)Class,和其他變量,比如局部變量,全局變量等。
此處的self,是個(gè)對(duì)象(Object),是當(dāng)前類(lèi)的實(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)的。
因?yàn)镻ython已經(jīng)規(guī)定:函數(shù)的第一個(gè)參數(shù),就必須是實(shí)例對(duì)象本身,并且約定俗成,把其名字寫(xiě)為self。因此我們?cè)俣x類(lèi)中的所有函數(shù)時(shí)必須傳入self參數(shù)。
demo
class
Car
(
)
:
def
__init__
(
self
,
make
,
model
,
year
)
:
###
self
.
make
=
make
self
.
model
=
model
self
.
year
=
year
def
get_descriptive_name
(
self
)
:
long_name
=
self
.
year
+
' '
+
self
.
make
+
" "
+
self
.
model
print
(
self
)
###看下self指向哪里
print
(
type
(
self
)
)
###看下self類(lèi)型是什么
return
long_name
my_car
=
Car
(
'aodi'
,
'A4'
,
'2010'
)
my_car
.
get_descriptive_name
(
)
輸出內(nèi)容:
<
__main__
.
Car
object
at
0x000001D31F7408D0
>
##可以看出self指向的是一個(gè)對(duì)象,也就是我們用my_car的實(shí)例對(duì)象 == self
<
class
'__main__.Car'
>
## self的類(lèi)型是Car類(lèi)的實(shí)例對(duì)象
'2010 aodi A4'
參考文獻(xiàn):https://www.cnblogs.com/ant-colonies/p/6718388.html
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
