Python 速查手冊

6.1 __init__()

__init__() 方法 (method) 是類別 (class) 的預設方法之一,在物件導向程式設計 (object-oriented programming) 中稱為建構子 (constructor) ,就是在建立物件實體 (instance) 的時候執行的方法。

先來看到 __init__() 方法的簡單定義,這裡直接在 __init__() 底下定義了屬性 (attribute) i ,直接設定好屬性 i 的值,然後在方法 hello() 中印出屬性 i ,注意由於 i 是實體屬性,因此在 __init__() 中要加上 self 及小數點

class Demo:
    def __init__(self):
        self.i = 9527
    
    def hello(self):
        print("Hello", self.i)
    
d = Demo()
d.hello()

#《程式語言教學誌》的範例程式
# https://kaiching.org/
# 檔名:init01.py
# 功能:示範定義類別
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 init01.py
Hello 9527
$

屬性也可以用 __init__() 方法的參數來設定,這時候就要在建立物件實體的時候提供參數 (parameter) ,例如這裡以整數 9527 當參數,因此呼叫 hello() 的時候就印出 Hello 9527

class Demo2:
    def __init__(self, i):
        self.i = i
    
    def hello(self):
        print("Hello", self.i)
    
d = Demo2(9528)
d.hello()

#《程式語言教學誌》的範例程式
# https://kaiching.org/
# 檔名:init02.py
# 功能:示範定義類別
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 init02.py
Hello 9528
$

屬性是依據需要來設置的,這裡 Demo3 類別的屬性 i 用參數建立,另外建立屬性 data ,這是一個具有英文名字的字串 (string) 串列 (list) ,然後 hello() 方法是依據屬性 i 印出 data 中的英文名字

class Demo3:
    def __init__(self, i):
        self.i = i
        self.data = ["9529", "9530", "9531", "9532"]
    
    def hello(self):
        i = 0
        while i < self.i:
            print("Hello", self.data[i])
            i += 1
    
d = Demo3(3)
d.hello()

#《程式語言教學誌》的範例程式
# https://kaiching.org/
# 檔名:init03.py
# 功能:示範定義類別
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 init03.py
Hello 9529
Hello 9530
Hello 9531
$

由於方法中的參數定義跟函數 (function) 相同,可以設定預設值或是不定個數的參數等,這裡將 i 預設為整數 2 ,因此在建立實體物件的時候,就可以不提供參數

class Demo4:
    def __init__(self, i=2):
        self.i = i
        self.data = ["9533", "9534", "9535", "9536"]
    
    def hello(self):
        i = 0
        while i < self.i:
            print("Hello", self.data[i])
            i += 1
    
d = Demo4()
d.hello()

#《程式語言教學誌》的範例程式
# https://kaiching.org/
# 檔名:init04.py
# 功能:示範定義類別
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 init04.py
Hello 9533
Hello 9534
$

上一頁:單元 6 - 類別
Python 速查手冊 - 目錄
下一頁: 6.2 __str__()
回 Python 教材首頁