CHAPTER 5 · 8 lessons · 101問
クラス
データとふるまいをひとまとめにして、自分だけの「種類」を作る。設計の考え方が変わる章。
第2章で辞書を覚えたとき、こう思ったかもしれない。「人やお店を表すなら、これで足りるじゃないか」と。実際、しばらくは足りる。困りはじめるのは、そのデータを使う処理が増えてきたときだよ。
たとえば「会員」を辞書で表したとする。会員の名前を整えて表示する処理、年会費を計算する処理、退会できるか判定する処理——それぞれ別の関数として書いていくと、データと処理がバラバラの場所に散らばる。会員のデータの形を少し変えたいだけなのに、関係する関数を全部探して回ることになる。
クラスは、そのデータと処理を1つの箱にまとめる仕組みだよ。「会員とはこういうデータを持ち、こういうことができるものだ」と一度書いておけば、あとはその設計図から実物をいくつでも作れる。設計図が クラス、そこから作った実物が インスタンス だ。
Python では class Kaiin: と書いて設計図を作る。中で最初に書くのが __init__ という特別な関数で、これは実物が生まれる瞬間に一度だけ呼ばれる。ここで「この会員の名前は何か」といった、個体ごとの値を決める。アンダースコア2本で囲まれた名前は Python が特別扱いするしるしだよ。
そして self。この章で作るインスタンスメソッドには、最初の引数として慣習的に self と書く。これは「いま扱っている、その実物自身」を指す。同じ設計図から作った会員が100人いても、self.namae と書けばその人の名前になる。最初は呪文に見えるけれど、「誰の話をしているか」を明示しているだけだよ。
章の後半は 継承。「ほとんど同じだけど、少しだけ違う」ものを作るときの書き方だ。会員クラスをもとに「プレミアム会員クラス」を作れば、共通の部分は書き直さずに、違うところだけ書けばいい。もとの処理を上書きするのがオーバーライド、上書きしつつもとの処理も呼ぶのが super() だよ。
クラスは、覚えることが多いわりに「ありがたみ」が実感しにくい章でもある。小さなプログラムなら関数だけでも書けてしまうからだ。でも、あなたが将来使うライブラリのほとんどはクラスでできている。書けるようになる前に、まず読めるようになる。それだけでも十分な収穫だよ。
この章のレッスン
設計図から作る
受けつぐ