本系列預計先介紹物件導向(以下簡稱OO)的基本概念,然後依OO的三或四大支柱:(Abstraction), Encapsulation, Inheritance, and Polymorphism,說明Python如何以其語言哲學來實作這幾個OO核心概念。如行有餘力,將試圖比較Python和其他OO程式語言(C++, Java, C#等)在OO實作上的異同。
內容分配:
OO基本概念介紹:約1-2篇
Abstraction $ Encapsulation: 約10篇
Inheritance: 約8篇
Polymorphism: 約8篇
結論:約2-3篇
昨天介紹了Object-Oriented程式語言中property的基本概念,以及Python實作property的方式:property()函數。今天prop...
今天繼續property之旅。可能是最後一篇了,試用講故事形式。 話說有一間Alex & Son Co.公司,內有團隊A(PM為Oliver,成員有...
今天介紹一個Python在設計類別時的小工具dataclass模組,大概勉強和封裝攀得上一點關係。一表三千里嘛。 之前我們看到的類別設計範例,其實只能算是...
今天還是再深入一點介紹dataclass(註1)好了。 擴充性 這是昨天「傳統版」的code: class Tree(): '''為了聚焦本clas...
Python的封裝介紹差不多「開到荼靡」了。今天起分享的也許是最後一個大主題(註1)。 在正式介紹前,各位請沿用以上Tree類別,設想一下這個需求: 使...
昨天簡介類別屬性(class attributes),今天則淺談類別方法(class methods)。 筆者談類別方法的「方法」(註1),是從類別屬性切入。...
之前十幾篇端出連串理論和術語的「大魚大肉」,讀者可能已經吃膩。今天換碟清粥小菜,幫大家清清腸胃。 這碟清粥小菜,是 self 和 cls。 self vs cl...
假如今晚沒有夢到更多封裝主題,本篇應該是這條物件導向大支柱的最後一講了。 前面幾篇談到:屬性(attributes)如按類別/物件層面區分,有類別屬性(cl...
今天起介紹物件導向程式的第二大支柱:繼承(Inheritance)。不過在正式開始前,先補充一下昨天的封裝本來要講卻漏掉的部分: 封裝保護層級(public v...
今天沒有新進度,只是寫code印證一下之前的「理論」。 還記得筆者以前說過,類別的私有(private)屬性和方法,只能在類別自身內存取,連它的子子孫孫(繼...