OOP とは?

Pythonによるオブジェクト指向プログラミング入門

George Boorman

Curriculum Manager, DataCamp

手続き型プログラミング

 

  • 手順の並びとしてのコード
  • データ分析に適する

階段

1 画像出典: https://unsplash.com/@tateisimikito
Pythonによるオブジェクト指向プログラミング入門

順序で考える

 

ベッド→コーヒー→ブリーフケースのアイコン(1人の一連の活動)

 

多様な活動を表すアイコンの集合

Pythonによるオブジェクト指向プログラミング入門

手続き型プログラミング

 

  • 手順の並びとしてのコード
  • データ分析に適する

オブジェクト指向プログラミング

 

  • オブジェクト同士のやり取りとしてのコード
  • ソフトウェア開発に適する
  • 保守しやすく再利用可能なコード
Pythonによるオブジェクト指向プログラミング入門

オブジェクト

$$\Large{\text{オブジェクト = データ + 機能}}$$

ノートPCを持つ人物のシルエット(顧客を表す)

                                                  状態 —— オブジェクトのデータ

                                                  振る舞い —— オブジェクトの_機能_

Pythonによるオブジェクト指向プログラミング入門

Python のオブジェクト

  • Python ではすべてがオブジェクト
オブジェクト 型
5 int
"Hello" str
pd.DataFrame() DataFrame
sum() function
... ...
Pythonによるオブジェクト指向プログラミング入門

設計図としてのクラス

  • クラス: 可能な状態と振る舞いを定義するオブジェクトの設計図

顧客クラス

Pythonによるオブジェクト指向プログラミング入門

設計図としてのクラス

  • クラス: 可能な状態と振る舞いを定義するオブジェクトの設計図

顧客クラスから顧客オブジェクトが派生

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 属性 df.shape
(3, 2)
  • obj. で属性・メソッドにアクセス
振る舞い ↔ メソッド
import pandas as pd
df = pd.DataFrame({"a": [1,2,3], 
                   "b": [4,5,6]})

# head メソッド 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によるオブジェクト指向プログラミング入門

用語チートシート

用語 定義
クラス オブジェクトを作る設計図/テンプレート
オブジェクト データと_機能_の組み合わせ。クラスのインスタンス
状態 オブジェクトに紐づくデータ。属性で設定
振る舞い オブジェクトの_機能_。メソッドで定義
Pythonによるオブジェクト指向プログラミング入門

振り返りましょう!

Pythonによるオブジェクト指向プログラミング入門

Preparing Video For Download...