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

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