はじめに
今回もPython基礎を扱います。テーマはクラスです。独学で学ぶ時のつまづきポイントではないでしょうか?私も、はじめちんぷんかんでした。こういうのは、実際に手を動かして試してみるのが良いですね。まずは、オブジェクトとクラスの概要を確認するところからはじめていきましょう。
オブジェクトとクラス
今回も「みんなのPython」(SB Creative)からの引用です。
オブジェクトは、データの性質によって分類されています。似た性質をもったオブジェクトに対しては、同じメソッドが使えるようになっています。
「みんなのPython」(SB Creative)
クラスとは、簡単に言うとオブジェクトの設計図です。オブジェクトがどのような性質を持っていて、どのような振る舞いをするのか、ということをコードに書いて、クラスという形にまとめることで、より便利なオブジェクトをプログラムで利用できるようになります。
説明だけ受けても、なかなかピンと来ないかもしれません。そこで、実際に作ってみて体感することにしましょう。
実際に作ってみる
何を作るか
ここでは、個人のテスト結果を管理するクラス、「Score」を作成してみましょう。このクラス「Score」は、次のような変数とメソッドを持ちます。
- name:名前をいれる変数
- math:数学の点数を入れる変数
- english:英語の点数を入れる変数
- japanese:国語の点数を入れる変数
- get_average():3教科の平均点を返すメソッド
これをscore.pyというファイルに保存してください。 そして、別途、test20200406.pyというファイルを作成し、Scoreをインポートして、平均点を表示するプログラムを書いてください。
クラスを定義する
クラスを定義するにはクラス文を使います。次のようにscore.pyを作ってみましょう。
class Score():
name=''
math=0
english=0
japanese=0
def get_average(self):
average=(self.math+self.english+self.japanese)/3
return average
class のあとにクラス名を記述したら、そのあとのブロック内で処理内容を書いていきます。まずは、class内で使う変数name, math, english, japaneseの初期値を決めておきます。このようにしておくことで、このクラスからインスタンスを作ると、変数が初期化されます。
次に、クラス内で使うメソッドの定義をおこないます。これまでに扱った関数の定義と同様に「def 関数名」で定義をおこないます。但し、第一引数はselfとなる、という決まりがあります。
こうしておくことで、クラス内で定義した変数を「self.変数名」で参照することができます。
このように定義したクラスは次のように使うことができます。
# scoreというファイルからScoreというクラスをインポート
from score import Score
# クラスからインスタンスをつくる
rakuda=Score()
rakuda.name='らくださん'
rakuda.math=98
rakuda.english=82
rakuda.japanese=90
avg=rakuda.get_average()
print(avg)
1行目は、コメントにあるようにscore.pyというファイルに記載されたScoreというクラスをインポートしています。
そのあとに、クラスからインスタンスを作成しています。
作成したインスタンスに値を入れていって、クラス内で定義されたメソッドを使って、平均値の算出をしています。
まとめ
今回はクラスを扱いました。普段あまり使わないようなものは、別ファイルでクラスとして定義しておくと、必要に応じてインポートして使うことができます。このようにして、メインのプログラムが肥大化しないようにしておくとよいですね。
コメント