Python3 教學 #05 (Ch9: Class: 繼承、建構子、多型、封裝、覆載)

本文會介紹Python的Class類別相關語法:
Python Class繼承、多型、封裝、建構子、變數、父類別的屬性/方法如何使用、覆載的語法

Python也是物件導向程式語言,在學習這個部分時,可以帶入Java的觀念來記憶會更深刻喔!
(以下語法皆以Python3.6撰寫。)

Class

語法

語法很簡單就是直接使用class關鍵字來完成類別的結構!
定義類別的語法『 class 類別名稱: 』
宣告物件的方法『 物件名稱 = 類別建構子名稱(參數) 』

建構子

建構子語法如下:
def __init__(self, 其他參數):
就算是在建構子裡面self也是必須傳入的參數喔!

值得一提的是Python不支援多建構子(multi constructor),但是可以透過預設值的方式來達成!
def __init__(self, para1=”para1預設值”, para2=”para2預設值2″):
如此一來,就可以有3種宣告方式!

使用類別自己的變數、函數都須要加上『 self.變數名稱 』才能使用!

執行輸出結果如下:

 

Class繼承

Python Class的繼承也很簡單!語法如下:
class 類別名稱(父類別):
繼承父類別要記得實作父類別的建構子,像是下列第16行那樣!

 

多型

定義兩種繼承Car的類別(SUV, Bus),同時也直接覆載(overwrite)父類別已經定義的方法!
撰寫方法如下,直接在子類別中覆載覆類別的方法即可!

執行結果如下:

 

特殊用法

物件與物件之間的互動可以透過覆載下列特殊方法來個別定義!
特殊方法,例如:物件1 > 物件2
def __gt__(self, other):
以這種來實作比較self/other的屬性或方法等等的功能!

方法名稱 用途
__lt__ 小於(<)
__le__ 小於等於(<=)
__eq__ 等於(==)
__ne__ 不等於(!=)
__gt__ 大於(>)
__ge__ 大於等於(>=)
__add__ +
__iadd__ +=
__sub__
__isub__ -=
__mul__ *
__imul__ *=
__truediv__ /
__itruediv__ /=
__floordiv__ //
__ifloordiv__ //=
__mod__ %
__imod__ %=
__pow__ **
__ipow__ **=

 

 

Andy Wang

站在巨人的肩膀上仍須戰戰兢兢!

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料