SlideShare una empresa de Scribd logo
1 de 38
1
po-9. クラス階層,継
承
金子邦彦
トピックス:クラス階層,継承(Python Tutor に
よる演習)
URL: https://www.kkaneko.jp/pro/po/index.html
(Python プログラミングの基本)
全体まとめ
• クラス階層では,複数のクラスが親子関係をなす
• 子クラスの定義では,親クラスの指定,親クラスの
__init__ へのアクセスを行う
• 親クラスの属性とメソッドは,子クラスに継承される
• 子クラスにおいて,同じ名前のメソッドが別定義され
ることもある
2
親クラスの指定
親クラスの __init__ へのアクセス
アウトライン
3
項目
復習
9-1 クラスとオブジェクト
9-2 クラス定義,オブジェクト生成
9-3 演習
4
• 2つのオブジェクトともに,
同じクラス Ball
と考えることができる
半径 3,場所(2, 4)
色 green
半径 1,場所(8, 10)
色 blue
クラス Ball
オブジェクト
オブジェクト
• オブジェクトは属性を持つ.
半径,場所,色などの属性を
考えることができる.
• メソッドは,オブジェクトに
属する操作や処理.
確認や属性の変化のための
メソッドを考えることができる.
クラス定義の例
5
クラス名: Ball
メソッド: __init__, printout
属性: x, y, r, color
※ __init__ は,オブジェクト生成のためのメソッド
Python Tutor の起動
① ウェブブラウザを起動する
② Python Tutor を使いたいので,次の URL を開く
http://www.pythontutor.com/
③ 「Python」をクリック ⇒ 編集画面が開く
6
Python Tutor でのプログラム実行手順
7
(1)「Visualize Execution」をク
リックして実行画面に切り替える
(2)「Last」をクリック.
(3) 実行結果を確認する.
(4)「Edit this code」をク
リックして編集画面に戻る
Python Tutor 使用上の注意点①
• 実行画面で,次のような赤の表示が出ることがある
→ 無視してよい
過去の文法ミスに関する確認表示
邪魔なときは「Close」
8
Python Tutor 使用上の注意点②
「please wait ... executing」のとき,10秒ほど待つ.
→ 混雑しているときは, 「Server Busy・・・」
というメッセージが出ることがある.
混雑している.少し(数秒から数十秒)待つと自
動で表示が変わる(変わらない場合には,操作を
もう一度行ってみる)
9
9-1. クラス階層
10
クラス階層
クラス階層では,複数のクラスが親子関係をなす
11
クラスA
クラスB
親
子
クラスD
親
子
クラスC
親
子
12
半径 3,場所(2, 4)
色 green
半径 1,場所(8, 10)
色 blue
クラス Ball
オブジェクト
オブジェクト
場所(1, 2)
色 red
クラス Point
オブジェクト
Point クラス定義の例
13
クラス名: Point
メソッド: __init__, printout
属性: x, y, color
※ __init__ は,オブジェクト生成のためのメソッド
演習
資料:15 ~ 16
【トピックス】
• クラス定義
• オブジェクト生成
• メソッドアクセス
14
① Python Tutor のエディタで次のプログラムを入
れる
15
クラス定義
オブジェクト生成
クラス定義,オブジェクト生成,メソッドアクセス
字下げも正確に
メソッドアクセス
16
オブジェクト c
「Visual Execution」をクリック.そして「Last」をクリック.結果を確認.
「Edit this code」をクリックすると,エディタの画面に戻る
② 実行し,結果を確認する
メソッド printout
による表示
Ball クラス定義の例
(クラス階層を考えない場合)
17
クラス名: Ball
メソッド: __init__, printout
属性: x, y, r, color
※ __init__ は,オブジェクト生成のためのメソッド
Point Ball
属性 属性
x x
y y
color color
r
メソッド メソッド
printout printout
類似した 2つのクラス
18
printout は名前は
同じだが,中身が違う
r の有り無しが
違う
x, y, color は同じ
Point クラスと Ball クラスの定義の例
(クラス階層を考えない場合)
Point Ball
19
x, y, color は同じ
同じようなプログラムを繰り返し書きたいですか?
→ No. クラス階層により解決
Point クラスと Ball クラスの定義の例
(クラス階層を考える場合)
Point Ball
20
x, y, color について
繰り返し書くことはなくなる
Point Ball
21
class Ball(Point)
Ball クラスは Point クラスの子である
super(Ball, self).__init__(x, y, color)
親クラスである Point クラスの
メソッド __init__ にアクセス.
その引数は x, y, color
クラス階層を考える場合と考えない場合の違い
22
Point
Ball
Point
Ball
働きは
同じ
クラス階層を考えない クラス階層を考える
演習
資料:24 ~ 25
【トピックス】
• サブクラスのクラス定義
23
① Python Tutor のエディタで次のプログラムを入れる
24
Ball クラスのクラス定義,オブジェクト生成,
メソッドアクセスを追加
追加
追加
25
オブジェクト a,
b, c
「Visual Execution」をクリック.そして「Last」をクリック.結果を確認.
「Edit this code」をクリックすると,エディタの画面に戻る
② 実行し,結果を確認する
メソッド printout
による表示
まとめ
• クラス階層では,複数のクラスが親子関係をなす
• 子クラスの定義では,親クラスの指定,親クラス
の __init__ へのアクセスを行う
26
親クラスの指定
親クラスの __init__ へのアクセス
9-2. 継承
27
継承とは,親クラスの属性とメソッドを子クラスが
受け継ぐこと
28
継承
• 親クラスの属性とメソッドは,子クラスに継承
される
• 子クラスにおいて,同じ名前のメソッドが別定
義されることもある
29
Point Ball
親 子
・属性 r を追加
・メソッド printout は別定義
30
属性 r を追加
メソッド printout は別定義
演習
資料:32 ~ 36
【トピックス】
• 継承
31
① Python Tutor のエディタで次のプログラムを入れる
32
Point クラスに,属性 x と y を 0 にするメソッド reset を追加
追加
追加
33
オブジェクト a, b, c
オブジェクト a, b の属
性 x, y の値が 0 に
なっている
「Visual Execution」をクリック.そして「Last」をクリック.結果を確認.
「Edit this code」をクリックすると,エディタの画面に戻る
② 実行し,結果を確認する
メソッド printout
による表示
Point クラスのメソッド reset が Ball クラスに継承されていることを確認
Python では,次のプログラムにより,オブジェク
ト a のメソッド名,属性名などを表示できる
34
print(dir(a))
③ Python Tutor のエディタで,
プログラムの末尾に「print(dir(a))」を追加する
35
追加
36
「Visual Execution」をクリック.そして「Last」をクリック.結果を確認.
「Edit this code」をクリックすると,エディタの画面に戻る
④ 実行し,結果を確認する
枠を広げる
横スクロースする
__class__ など「__」で始まるもの: システムが自動で追加したメソッド,属性
color, printout, r, reset, x, y: プログラムで書いたメソッド,属性
Ball クラスには,Point クラスの属性,メソッドが
継承されている
全体まとめ
• クラス階層では,複数のクラスが親子関係をなす
• 子クラスの定義では,親クラスの指定,親クラスの
__init__ へのアクセスを行う
• 親クラスの属性とメソッドは,子クラスに継承される
• 子クラスにおいて,同じ名前のメソッドが別定義され
ることもある
37
親クラスの指定
親クラスの __init__ へのアクセス
Python 関連ページ
• Python まとめページ
https://www.kkaneko.jp/tools/man/python.html
• Python 入門(スライド資料とプログラム例)
https://www.kkaneko.jp/pro/pf/index.html
• Python プログラミングの基本(スライド資料とプログラム例)
https://www.kkaneko.jp/pro/po/index.html
• Python プログラム例
https://www.kkaneko.jp/pro/python/index.html
• 人工知能の実行(Google Colaboratory を使用)
https://www.kkaneko.jp/ai/ni/index.html
• 人工知能の実行(Python を使用)(Windows 上)
https://www.kkaneko.jp/ai/deepim/index.html
38

Más contenido relacionado

Más de kunihikokaneko1

cs-5. 人工知能の概要
cs-5. 人工知能の概要 cs-5. 人工知能の概要
cs-5. 人工知能の概要
kunihikokaneko1
 
cs-4. プログラミング入門
cs-4. プログラミング入門cs-4. プログラミング入門
cs-4. プログラミング入門
kunihikokaneko1
 
cs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックス
cs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックスcs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックス
cs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックス
kunihikokaneko1
 
cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素
cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素 cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素
cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素
kunihikokaneko1
 
cs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタ
cs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタcs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタ
cs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタ
kunihikokaneko1
 
mi-8. 人工知能とコンピュータビジョン
mi-8. 人工知能とコンピュータビジョンmi-8. 人工知能とコンピュータビジョン
mi-8. 人工知能とコンピュータビジョン
kunihikokaneko1
 
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線mi-7. 学習と検証, 学習不足, 過学習, 学習曲線
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線
kunihikokaneko1
 
mi-6. 画像分類システム
mi-6. 画像分類システムmi-6. 画像分類システム
mi-6. 画像分類システム
kunihikokaneko1
 
mi-3. データサイエンス・AIの演習
mi-3. データサイエンス・AIの演習mi-3. データサイエンス・AIの演習
mi-3. データサイエンス・AIの演習
kunihikokaneko1
 
mi-1. 人工知能の概要
mi-1. 人工知能の概要mi-1. 人工知能の概要
mi-1. 人工知能の概要
kunihikokaneko1
 

Más de kunihikokaneko1 (20)

cs-5. 人工知能の概要
cs-5. 人工知能の概要 cs-5. 人工知能の概要
cs-5. 人工知能の概要
 
cs-4. プログラミング入門
cs-4. プログラミング入門cs-4. プログラミング入門
cs-4. プログラミング入門
 
cs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックス
cs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックスcs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックス
cs-3. パノラマ画像,ストリートビュー,3次元コンピュータグラフィックス
 
cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素
cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素 cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素
cs-2. コンピュータによる画像制作,人工知能でできること,情報のコード化,デジタル画像,画素
 
cs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタ
cs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタcs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタ
cs-1. 無料ソフトウエア,無料データ,エコシステム,Scratch プログラミング,Scratch のキャラクタ
 
mi-8. 人工知能とコンピュータビジョン
mi-8. 人工知能とコンピュータビジョンmi-8. 人工知能とコンピュータビジョン
mi-8. 人工知能とコンピュータビジョン
 
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線mi-7. 学習と検証, 学習不足, 過学習, 学習曲線
mi-7. 学習と検証, 学習不足, 過学習, 学習曲線
 
mi-6. 画像分類システム
mi-6. 画像分類システムmi-6. 画像分類システム
mi-6. 画像分類システム
 
mi-5. ディープラーニング
mi-5. ディープラーニングmi-5. ディープラーニング
mi-5. ディープラーニング
 
mi-4. 機械学習
mi-4. 機械学習mi-4. 機械学習
mi-4. 機械学習
 
mi-3. データサイエンス・AIの演習
mi-3. データサイエンス・AIの演習mi-3. データサイエンス・AIの演習
mi-3. データサイエンス・AIの演習
 
mi-2. データサイエンス・AIの事例
mi-2. データサイエンス・AIの事例mi-2. データサイエンス・AIの事例
mi-2. データサイエンス・AIの事例
 
mi-1. 人工知能の概要
mi-1. 人工知能の概要mi-1. 人工知能の概要
mi-1. 人工知能の概要
 
kaneko202304.pptx
kaneko202304.pptxkaneko202304.pptx
kaneko202304.pptx
 
Coding Standards of C++ について
 Coding Standards of C++ について  Coding Standards of C++ について
Coding Standards of C++ について
 
co-2. メソッド定義と呼び出し
co-2. メソッド定義と呼び出しco-2. メソッド定義と呼び出し
co-2. メソッド定義と呼び出し
 
co-1. クラスとメソッド
 co-1. クラスとメソッド co-1. クラスとメソッド
co-1. クラスとメソッド
 
Visual Studio 2013 の起動とプロジェクトの新規作成
Visual Studio 2013 の起動とプロジェクトの新規作成Visual Studio 2013 の起動とプロジェクトの新規作成
Visual Studio 2013 の起動とプロジェクトの新規作成
 
extern の意味
extern の意味extern の意味
extern の意味
 
cp-15. 疑似乱数とシミュレーション
cp-15. 疑似乱数とシミュレーションcp-15. 疑似乱数とシミュレーション
cp-15. 疑似乱数とシミュレーション
 

po-9. クラス階層,継承