电竞比分网-中国电竞赛事及体育赛事平台

分享

Python__init__()類構(gòu)造方法

 碼農(nóng)9527 2021-09-14

    在創(chuàng)建類時,我們可以手動添加一個__init__()方法,該方法是一個特殊的類實例方法,稱為構(gòu)造方法(或構(gòu)造函數(shù))。

Python__init__()類構(gòu)造方法

    構(gòu)造方法用于創(chuàng)建對象時使用,每當(dāng)創(chuàng)建一個類的實例對象時,Python解釋器都會自動調(diào)用它。Python類中,手動添加構(gòu)造方法的語法格式如下:

def __init__(self,...):
 代碼塊12復(fù)制代碼類型:[python]

    注意,此方法的方法名中,開頭和結(jié)尾各有2個下劃線,且中間不能有空格。Python中很多這種以雙下劃線開頭、雙下劃線結(jié)尾的方法,都具有特殊的意義,后續(xù)會一一為大家講解。

    另外,__init__()方法可以包含多個參數(shù),但必須包含一個名為self的參數(shù),且必須作為第一個參數(shù)。也就是說,類的構(gòu)造方法最少也要有一個self參數(shù)。例如,仍以TheFirstDemo類為例,添加構(gòu)造方法的代碼如下所示:

class TheFirstDemo:
 '''這是一個學(xué)習(xí)Python定義的第一個類'''
 #構(gòu)造方法
 def __init__(self):
  print("調(diào)用構(gòu)造方法") # 下面定義了一個類屬性
 add = 'http://c.'
 # 下面定義了一個say方法
 def say(self, content):
  print(content)12345678910復(fù)制代碼類型:[python]

    注意,即便不手動為類添加任何構(gòu)造方法,Python也會自動為類添加一個僅包含self參數(shù)的構(gòu)造方法。

    僅包含self參數(shù)的__init__()構(gòu)造方法,又稱為類的默認(rèn)構(gòu)造方法。

    在上面代碼的后面,頂頭(不縮進(jìn))直接添加如下代碼:

zhangsan = TheFirstDemo()12復(fù)制代碼類型:[java]

    這行代碼的含義是創(chuàng)建一個名為zhangsan的TheFirstDemo類對象。運(yùn)行代碼可看到如下結(jié)果:

    調(diào)用構(gòu)造方法

    顯然,在創(chuàng)建zhangsan這個對象時,隱式調(diào)用了我們手動創(chuàng)建的__init__()構(gòu)造方法。

    不僅如此,在__init__()構(gòu)造方法中,除了self參數(shù)外,還可以自定義一些參數(shù),參數(shù)之間使用逗號“,”進(jìn)行分割。例如,下面的代碼在創(chuàng)建__init__()方法時,額外指定了2個參數(shù):

class CLanguage:
 '''這是一個學(xué)習(xí)Python定義的一個類'''
 def __init__(self,name,add):
  print(name,"的網(wǎng)址為:",add)#創(chuàng)建 add 對象,并傳遞參數(shù)給構(gòu)造函數(shù)add = CLanguage("開課吧廣場","https://topic./")123456復(fù)制代碼類型:[python]

    注意,由于創(chuàng)建對象時會調(diào)用類的構(gòu)造方法,如果構(gòu)造函數(shù)有多個參數(shù)時,需要手動傳遞參數(shù),傳遞方式如代碼中所示(后續(xù)章節(jié)會做詳細(xì)講解)。

    運(yùn)行以上代碼,執(zhí)行結(jié)果為:

開課吧廣場 的網(wǎng)址為: https://topic./1復(fù)制代碼類型:[python]

    可以看到,雖然構(gòu)造方法中有self、name、add3個參數(shù),但實際需要傳參的僅有name和add,也就是說,self不需要手動傳遞參數(shù)。

    關(guān)于self參數(shù),后續(xù)章節(jié)會做詳細(xì)介紹,這里只需要知道,在創(chuàng)建類對象時,無需給self傳參即可。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多