什麼是 OOP?

Python 物件導向程式設計入門

George Boorman

Curriculum Manager, DataCamp

程序式程式設計

 

  • 程式碼依步驟順序執行
  • 很適合做資料分析

樓梯

1 Image source: https://unsplash.com/@tateisimikito
Python 物件導向程式設計入門

以「序列」思考

 

床上的人、咖啡、公事包圖示

 

多種活動的圖示組合

Python 物件導向程式設計入門

程序式程式設計

 

  • 程式碼依步驟順序執行
  • 很適合做資料分析

物件導向程式設計

 

  • 以物件互動來組成程式碼
  • 很適合打造軟體
  • 程式碼可維護、可重用!
Python 物件導向程式設計入門

物件(Objects)

$$\Large{\text{Object = data + functionality}}$$

拿筆電的顧客剪影

                                                  State-物件的 data

                                                  Behavior-物件的 functionality

Python 物件導向程式設計入門

Python 中的物件

  • Python 中萬物皆物件
物件 型別
5 int
"Hello" str
pd.DataFrame() DataFrame
sum() function
... ...
Python 物件導向程式設計入門

類別是藍圖

  • Class:建構物件的藍圖,描述可能的狀態與行為

customer class

Python 物件導向程式設計入門

類別是藍圖

  • Class:建構物件的藍圖,描述可能的狀態與行為

customer class branching out to customer objects

Python 物件導向程式設計入門

Python 裡的類別

  • 相同型別的 Python 物件會有相同行為
  • lists 是一種類別
    • 以逗號分隔的值建立 [1, 2, 3, 4, 5]
    • 共享相同方法,例如 .append()
  • type() 查看類別
type([1, 2, 3, 4, 5])
<class 'list'>
Python 物件導向程式設計入門

屬性與方法

狀態 ↔ 屬性
import pandas as pd
df = pd.DataFrame({"a": [1,2,3], 
                   "b": [4,5,6]})

# shape attribute df.shape
(3, 2)
  • obj. 存取屬性與方法
行為 ↔ 方法
import pandas as pd
df = pd.DataFrame({"a": [1,2,3], 
                   "b": [4,5,6]})

# head method df.head()
   a  b
0  1  4
1  2  5
2  3  6
Python 物件導向程式設計入門

列出屬性與方法

# 顯示屬性與方法
dir([1, 2, 3, 4])
['__add__',
 '__class__',
 '__contains__',
 '__delattr__', 
 ...
 'pop',
 'remove',
 'reverse',
 'sort']
# 顯示屬性與方法
dir(list)
['__add__',
 '__class__',
 '__contains__',
 '__delattr__', 
 ...
 'pop',
 'remove',
 'reverse',
 'sort']
Python 物件導向程式設計入門

小抄整理

術語 定義
Class 用來建立物件的藍圖/範本
Object datafunctionality 的組合;類別的實例
State 物件所帶的 data,透過屬性指定
Behavior 物件的 functionality,由方法定義
Python 物件導向程式設計入門

來複習一下!

Python 物件導向程式設計入門

Preparing Video For Download...