OOP とは?

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

Alex Yarosh

Content Quality Analyst @ DataCamp

 

手続き型プログラミング

 

  • 手順の並びとしてコードを書く
  • データ分析に最適
Python によるオブジェクト指向プログラミング

手順として考える

 

就寝→コーヒー→ブリーフケースのアイコン

 

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

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

 

手続き型プログラミング

 

  • 手順の並びとしてコードを書く
  • データ分析やスクリプトに最適

 

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

 

  • コードはオブジェクト同士の相互作用
  • フレームワークやツール構築に最適
  • 保守しやすく再利用性が高い
Python によるオブジェクト指向プログラミング

データ構造としてのオブジェクト

$$\Large{\text{オブジェクト = 状態 + 振る舞い}}$$

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

 

$$\text{\textbf{カプセル化}: データとそれを操作するコードを一体化}$$

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

設計図としてのクラス

  • クラス: オブジェクトの設計図。取りうる状態と振る舞いを定義

顧客クラス

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

設計図としてのクラス

  • クラス: オブジェクトの設計図。取りうる状態と振る舞いを定義

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

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

Python のオブジェクト

  • Python ではすべてがオブジェクト
  • 各オブジェクトにはクラスがある
  • クラスは type() で確認
import numpy as np
a = np.array([1,2,3,4])
print(type(a))
numpy.ndarray
オブジェクト クラス
5 int
"Hello" str
pd.DataFrame() DataFrame
np.mean function
... ...
Python によるオブジェクト指向プログラミング

属性とメソッド

状態 ↔ 属性
import numpy as np
a = np.array([1,2,3,4])

# shape 属性 a.shape
(4,)

 

  • 属性やメソッドには obj. でアクセス
振る舞い ↔ メソッド
import numpy as np
a = np.array([1,2,3,4])

# reshape メソッド a.reshape(2,2)
array([[1, 2],
       [3, 4]])
Python によるオブジェクト指向プログラミング

オブジェクト = 属性 + メソッド

  • 属性 ↔ 変数obj.my_attribute

  • メソッド ↔ function()obj.my_method()

import numpy as np
a = np.array([1,2,3,4])
dir(a)                # <--- すべての属性とメソッドを一覧
['T',
 '__abs__',
 ...
 'trace',
 'transpose',
 'var',
 'view']

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

復習しましょう!

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

Preparing Video For Download...