更新時間:2021-07-02 來源:黑馬程序員 瀏覽量:
每個類都有一個默認的__init__()方法,如果在定義類時顯式地定義了__init__()方法,則創(chuàng)建對象時Python解釋器會調用顯式定義的__init__()方法;如果定義類時沒有顯式定義__init__()方法,那么Python解釋器會調用默認的__init__()方法。
__init__()方法按照參數(shù)的有無(self除外)可分為有參構造方法和無參構造方法,無參構造方法中可以為屬性設置初始值,此時使用該方法創(chuàng)建的所有對象都具有相同的初始值。若希望每次創(chuàng)建的對象都有不同的初始值,則可以使用有參構造方法實現(xiàn)。
例如,定義一個類Information,在該類中顯式地定義一個帶有3個參數(shù)的__init__()方法和info()方法,示例代碼如下:
class Inforamtion(object): def __init__(self, name, sex): # 有參構造方法 self.name = name # 添加屬性name self.sex = sex # 添加屬性sex def info(self): print(f'姓名:{self.name}') print(f'性別:{self.sex}')上述代碼中首先定義了一個包含三個參數(shù)的Information類,然后通過參數(shù)name與sex為屬性name和sex進行賦值,最后在info()方法中訪問屬性name和sex的值。
因為定義的構造方法中需要接收兩個實際參數(shù),所以在實例化Information類對象時需要傳入兩個參數(shù),示例代碼如下:
infomation = Inforamtion('李婉', '女') infomation.info()
運行代碼,結果如下所示:
姓名:李婉 性別:女
注意:
前面在類中定義的屬性是類屬性,可以通過對象或類進行訪問;在構造方法中定義的屬性是實例屬性,只能通過對象進行訪問。