HackMD 完整版請點我
OOP 三大精隨 - 封裝、繼承、多型(補充) 封裝(Encapsulation) 將物件的內部狀態和行為隱藏在物件內部,只公開必要的方法給外界使用。封裝可以保護物件免於外界的非法存取,並且讓物件更容易維護和修改。
1 2 3 4 5 6 class Animal : name = '' __private = '' def __init__ (self, name ): self.name = name self.__private = ''
繼承(Inheritance) 子類別可以繼承父類別的屬性和方法,並且可以擴展或覆寫父類別的行為。繼承可以提高程式碼重複使用性,並且可以讓類別之間建立階層關係,方便對類別進行分類和管理。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 class Animal : name = '' def __init__ (self, name ): self.name = name def walk (self ): print ('walking' ) def eat (self ): print ('eating' ) class Dog (Animal ): def __init__ (self, name ): super ().__init__(name) A = Dog('A' ) A.walk() A.eat() print (A.name)
1 2 3 4 Output: walking eating A
多型(Polymorphism) 同樣的方法名稱可以在不同的類別中有不同的實現方式,這稱為多型。多型可以讓程式碼更加靈活,並且可以讓不同的物件對相同的方法有不同的行為。多型可以通過繼承和介面實現,是物件導向設計中非常重要的概念。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 class Animal : name = '' def __init__ (self, name ): self.name = name def walk (self ): print ('walking' ) def eat (self ): print ('eating' ) class Dog (Animal ): def __init__ (self, name ): super ().__init__(name) def walk (self ): print ('{0} is using foot to walk' .format (self.name)) def eat (self ): print ('{0} is eating bone' .format (self.name)) class Duck (Animal ): def __init__ (self, name ): super ().__init__(name) def walk (self ): print ('{0} is using two feet to walk' .format (self.name)) def eat (self ): print ('{0} is eating worm' .format (self.name)) A = Dog('A' ) B = Duck('B' ) A.eat() B.eat()
1 2 3 Output: A is eating bone B is eating worm
Code Source: 搞懂Python的OOP
小結 到這裡為止你已經學完絕大部分常用的 Python 語法了,簡單開發所需的語法基本上不太會超過本篇教學的範圍。然而,資訊工程的領域極其廣大,目前碰到的還僅止於皮毛,若有興趣可以繼續鑽研資料結構、演算法等等課題,也可以透過題目或專案來練習自己的 Coding 能力。另外,網路上有很多相關資訊或教學,透過網路自我學習、不斷成長,也是件很重要的事情,加油!
系列文結語 透過這次家教的機會,我也好好的重新複習了一次 Python 的基礎語法,自己在這個過程中也收穫了一些以前沒注意到的細節,難怪大家都說教學相長(但長的速度比較慢就是了)。我原本是想把上課講義做得像方便查找與複習的語法 & 概念精華,後來發現發成文章也不錯,希望這九篇的系列文對你有所幫助,有任何回饋都很歡迎提供給我喔!未來有時間或有機會的話,也許可以再整理一些更進階的議題(資料結構、演算法等等的),或者是我也會分享我學習的新東西,那麼就未來見啦~