pf-11. クラス階層,継承
Python 入門)
URL: https://www.kkaneko.jp/pro/pf/index.html
1
金子邦彦
オブジェクトとメソッド
オブジェクト
:コンピュータでの操作や処理の対象と
なるもの
メソッド:オブジェクトに属する機能や操作.オブジェ
クトがもつ能力に相当する
引数:メソッドが行操作の詳細に関する情報,
ソッド呼び出しのときに、引数を指定できる
hero.attack("fence", 36, 26)
2
hero.moveDown() hero オブジェクト
moveDown() メソッド
間を「.」で区切っている
クラスとオブジェク
クラは,同じ種類のオブジェクトの集まりと考え
ることができる
3
人間
学生
学生でもあり人間でもある 人間だが,学生ではない
クラス定義の例
4
クラス名: Point
属性: x, y, color
メソッド: __init__, printout
オブジェクト生成の際に,メソッド __init__ が自動で実行
される
trinket
Trinket オンラインPythonHTML 等の学習サイト
有料の機能と無料の機能がある
自分が作成した Python プログラムを公開し、他の人に実
行してもらことが可能(そのとき、書き替えて実行も可
能)
Python の標準機能を登載、その他、次のモジュールや
パッケージがインストール済み
math, matplotlib.pyplot, numpy, operator, processing, pygal,
random, re, string, time, turtle, urllib.request
5
trinket Python, HTML などのプログラムを書き実行でき
サイト
https://trinket.io/python/0fd59392c8
のよに、違プログラムには違URL が割り当てられる
実行が開始しないときは、「実行ボタン」で実行
ソースコードを書き替えて再度実行することも可能
trinket でのプログラム実行
6
ソースコードの
メイン画面 実行結果
実行、STOP ボタン
演習
資料:8
トピックス
クラス定義
class
オブジェクト生成
メソッド呼び出し
7
trinket の次のページを開く
https://trinket.io/python/b0698edcb7
実行結果が,次のよに表示されることを確認
このプログラムは,オブジェクト p を生成する.そして,
メソッド printout を呼び出して,属性値を表示させる
8
クラス階層
クラス階層では,複数のクラスが親子関係をなす
9
クラスA
クラスB
クラスD
クラスC
10
半径 3,場所(2, 4
green
半径 1場所(8, 10
blue
クラス Ball
オブジェクト
オブジェクト
場所(1, 2
red
クラス Point
オブジェクト
クラス Point
クラス Ball
Point Ball
属性 属性
x x
y y
color color
r
メソッド メソッド
printout printout
類似した 2つのクラス
11
printout は名前は
同じだが,中身が違
r の有り無しが
x, y, color 同じ
継承
親クラス属性ソッドは,子クラ継承
される
子クラスおいて,同じ名前のメソッド別定
されることもある
12
Point Ball
・属性 r を追加
・メソッド printout は別定義
13
属性 r を追加
メソッド printout は別定義
Point クラスと Ball クラスの定義の例
(クラス階層を考えない場合)
Point Ball
14
x, y, color 同じ
同じよなプログラムを繰り返し書きたいですか?
No. クラス階層により解決
Point クラスと Ball クラスの定義の例
(クラス階層を考える場合
Point Ball
15
x, y, color について
繰り返し書くことはなくなる
Point Ball
16
class Ball(Point)
Ball クラスは Point クラスの子である
super(Ball, self).__init__(x, y, color)
親クラスである Point クラスの
メソッド __init__ にアクセス.
その引数は x, y, color
クラス階層を考える場合と考えない場合の違い
17
Point
Ball
Point
Ball
働きは
同じ
クラス階層を考えない クラス階層を考える
演習
資料:19
トピックス
クラス定義
Class
サブクラスのクラス定義
18
trinket の次のページを開く
https://trinket.io/python/8f5efe7d0e
実行結果が,次のよに表示されることを確認
このプログラムは,オブジェクト p, a, b を生成する.そして,
メソッド printout を呼び出して,属性値を表示させる
19