Tomomi Research Inc.
Python
Class 解説
2017/09/19 (Thu)
Seong-Hun Choe
Tomomi Research Inc.
Classの概念
2017/9/26
出典:みんなのAI講座 ゼロからPythonで学ぶ
人工知能と機械学習 (Udemy)
講座のリンク
https://www.udemy.com/learning-
ai/learn/v4/t/lecture/7332422?sta
rt=0
Tomomi Research Inc.
用語の説明
2017/9/26
(2) インスタンス(Instance) : クラス(設計図)に
よって作られたもの(実体Object)
(3) メッソド(Method) : クラス(設計図)によって作
られた関数。
(4) プロパティ(Property) : クラス(設計図)によっ
て作られた変数。今は覚えなくてもいい。
(1)
Tomomi Research Inc.
休憩:Pythonのドット(.)
■ ドット(.)は、「~の」という意味。
2017/9/26
npのarray()との意味
randomのrandint()との意味
diceクラスのDice()メッソド
との意味
この表記に慣れれば、クラス
を理解し、Deep learningのプロ
グラミングができるようになる。
Tomomi Research Inc.
クラスの生成
■ サイコロを振るプログラムを「クラス」を利用して作る。
2017/9/26
Diceというクラス
(設計図)
Saiという
インスタンス
(Object)
別のインスタ
ンス
別のインスタ
ンス
Passとは何もないこ
とを意味する。ここ
だけ使う。
Diceというクラスによってsaiというインスタン
スを生成
Tomomi Research Inc.
プロパティの追加
■ サイコロは6面であることを指定
2017/9/26
• 6面を表す変数を指定。ク
ラスの変数をプロパティと
呼ぶ。(覚えなくても良い)
• passはなくなった。
• saiのface_numとの意味
Diceというクラス
(設計図)
face_num=6
Saiという
インスタンス
(Object)
face_num=6
設計図の変数がそのままイン
スタンスに引き継がれる。
Tomomi Research Inc.
メッソドの追加
■ サイコロを振る(shoot a dice 英)→1~6までの数字をランダムに返す。
* 1から6までの数字をランダムに返す関数を追加。
* クラス内部の関数をメッソドと呼ぶ。
* 注意点:メッソドを宣言する時、必ずselfという引数を取る
2017/9/26
random module import
shoot()メッソド, 引数がself
Saiインスタンス
Saiのshoot()メッソド
1回目は5
2回目は2
Diceというクラス
(設計図)
face_num=6
Shoot()
Saiという
インスタンス
(Object)
face_num=6
Shoot()
設計図の関数(メッソド)がそのま
まインスタンスに引き継がれる。
Tomomi Research Inc.
ちょっと高度にする。
■六面体のサイコロを、正多面体(4, 6, 8, 12, 20)のサイコロにしたい。
2017/9/26
正四面体
正六面体
正二十面体
正十二面体
正八面体
正六面体
Tomomi Research Inc.
まず、ランダムメッソドの修正
2017/9/26
selfのface_numと意味
理由はともかくここでは覚えておく。
Shootメッソドのrandint()の引数にself.face_numになることに注意
Tomomi Research Inc.
まず、ランダムメッソドの修正(六面体→二十面体)
2017/9/26
selfのface_numと意味
理由はともかくここでは覚えておく。
Shootメッソドのrandint()の引数にself.face_numになることに注意
Tomomi Research Inc.
まず、ランダムメッソドの修正
■ まず、クラスを初期化する。
初期化メッソド : __init__()
2017/9/26
変な形だけど、とりあえず暗記
ここも引数がself
Tomomi Research Inc.
プログラムを改造する。
1.何面体ですか? → ユーザーが数字を入力 → それに合わせてサイコロの数字が出力
2017/9/26
? 12
ランダムに
1~11の数字
を出力
正十二面体
Tomomi Research Inc.
プログラムを改造する。
2017/9/26
インスタンスを作る時、引数(6=val)を記入する。
引数(6=val)しないとエラー発生
Tomomi Research Inc.
インスタンス作る時、引数を記入したくない。
2017/9/26
引数valにデフォルト値を指定すればいい。
__init(self, val=6)
引数(6=val)しなくてもとエラー発生しない。
Tomomi Research Inc.
作ったクラスをモジュールファイルとしておく
2017/9/26
ファイル名:dice.py
Jupyterの作業ディレクトリに
置く
dice.pyをimport
dice.py(module)のDice(class)を
呼び指す。
Tomomi Research Inc.
まとめ
1. クラスは設計図。作られたものをインスタンスと呼ぶ。
2. クラス内部の関数はメッソド
3. クラスでメッソドを宣言する時、引数としてselfを必ず使う。
4. クラスの初期化のメッソド、変な名前 __init__()
5. クラスのメッソド内部の変数(プロパティ)にはなぜかself.をつける
次回は、このクラスがDeep learningでどう使われるかを説明します。
2017/9/26

Python : Class