__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()
#《程式語言教學誌》的範例程式
# http://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()
#《程式語言教學誌》的範例程式
# http://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()
#《程式語言教學誌》的範例程式
# http://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()
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:init04.py
# 功能:示範定義類別
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 init04.py |
Hello 9533 |
Hello 9534 |
$ |
相關教學影片