pf-10. クラス定義,オブジェ
クト生成,メソッド,属性
Python 入門)
URL: https://www.kkaneko.jp/pro/pf/index.html
1
金子邦彦
ソフトエア設計の理解
抽象化
2
オブジェクトとメソッド
オブジェクト
:コンピュータでの操作や処理の対象と
なるもの
メソッド:オブジェクトに属する機能や操作.オブジェ
クトがもつ能力に相当する
引数:メソッドが行操作の詳細に関する情報,
ソッド呼び出しのときに、引数を指定できる
hero.attack("fence", 36, 26)
3
hero.moveDown() hero オブジェクト
moveDown() メソッド
間を「.」で区切っている
クラスとオブジェクト
クラは,同じ種類のオブジェクトの集まりと考え
ることができる
4
人間
学生
学生でもあり人間でもある 人間だが,学生ではない
同じクラスの2つのオブジェクト
5
半径 3,場所(2, 4
green
半径 1,場所(8, 10
blue
オブジェクト
オブジェクト
オブジェクト
半径,場所,色などの属性
を持つことができる
クラス Ball
クラス定義の例
6
クラス名: Ball
属性: x, y, r, color
メソッド: __init__, printout
オブジェクト生成の際に,メソッド __init__ が自動で実行
される
クラス定義の例
7
クラス名: Ball
属性: x, y, r, color
メソッド: __init__, printout
__init__ は,オブジェクトが生成される際に自動的
呼び出されるメソッ
クラス名: Ball
メソッド: __init__
メソッド: printout
クラスの利用
オブジェクト生成
Ball クラスのオブジェクト生成
属性アクセス
属性 x, y, r, color の値の取得や変更
メソッド呼び出し
メソッド printout の呼び出し 8
Ball クラスのオブジェクト生成
Python では,「クラス名()」の形式でオブジェクト生成
オブジェクト生成の際に,メソッド __init__ が自動で実行
される
9
Ball クラスの属性アクセス
Python では,「オブジェクト . 属性名」の形式で属性にア
クセスする
属性値の変更は「オブジェクト . 属性名 = 値や式」の形式
で行
10
Ball クラスのメソッド呼び出し
Python では,「オブジェクト . メソッド名 ()」の形式で
ソッドを呼び出す
11
メソッド定義内での属性アクセス,メソ
ド呼び出し
メソッド定義内の属性アクセスは,「self . 属性名」の形
メソッド定義内のメソッド呼び出しは,「self . メソッド
() 」の形式
12
trinket
Trinket オンラインPythonHTML 等の学習サイト
有料の機能と無料の機能がある
自分が作成した Python プログラムを公開し、他の人に実
行してもらことが可能(そのとき、書き替えて実行も可
能)
Python の標準機能を登載、その他、次のモジュールや
パッケージがインストール済み
math, matplotlib.pyplot, numpy, operator, processing, pygal,
random, re, string, time, turtle, urllib.request
13
trinket Python, HTML などのプログラムを書き実行でき
サイト
https://trinket.io/python/0fd59392c8
のよに、違プログラムには違URL が割り当てられる
実行が開始しないときは、「実行ボタン」で実行
ソースコードを書き替えて再度実行することも可能
trinket でのプログラム実行
14
ソースコードの
メイン画面 実行結果
実行、STOP ボタン
演習
資料:16
トピックス
クラス定義
class
オブジェクト生成
メソッド呼び出し
15
trinket の次のページを開く
https://trinket.io/python/6fdf17af8f
実行結果が,次のよに表示されることを確認
このプログラムは,オブジェクト a, b を生成する.そして,
メソッド printout を呼び出して,属性値を表示させる
16
演習
資料:18
トピックス
クラス定義
class
オブジェクト生成
属性アクセス
17
trinket の次のページを開く
https://trinket.io/python/2fd4a420de
実行結果が,次のよに表示されることを確認
このプログラムは,オブジェクト a を生成する.そして,
属性 x, y にアクセスする
18
ソフトエア設計の理解
クラスメソッド属性を使用することで、ログラム
は読みやすくなり、将来必要となる変更も行いやすく
ります。更には、これらの要素を適切に使用することで、
全体的なソフトェアアーキテクチャと設計への理解を
深め、効率的で再利用可能なコードを作成することがで
きます。
抽象化
同じ種類のオブジェクトをクラスにまとめとい抽象
を行ことで、現実世界の概念プログラムに取り入
れることが容易になるとともに、プログラムが読みやす
く再利用しやすくなります。また、抽象化により、シ
テム全体の柔軟性を向上させることができます。
19
全体まとめ
クラス同じ種類のオブジェクトの集まり
属性オブジェクトの状態を表す
メソッドオブジェクトに属する機能や操作
次のクラス定義により、「Ball」クラスのオブジェクトの
生成、「color」や「x」などの属性アクセス、情報を表示
する「printoutメソッドへのアクセスができるよになる
class Ball:
def __init__(self, x, y, r, color):
self.x = x
self.y = y
self.r = r
self.color = color
def printout(self):
print(self.x, self.y, self.r, self.color)
次のプログラムにより x = 8, y = 10, r = 1, color = "blue"
のボールが生成され,表示が行われる
a = Ball(8, 10, 1, "blue")
a.printout() 20