はじめに
Pythonを使い始めて、なんとも理解しにくかったのが”クラス”なるもの。
まずは、インスタンスの生成、イニシャライズ、selfを使わなくてはいけないとか何が何だか、なんでこんなことをしなくてはならないのか・・・・・
まったく理解できませんでした。
クラスなんて使わなくてもリストで対応できるじゃん!!
なんて思っていたのですが、苦労しながらも使っているとクラスって本当に便利な物だなと分かってきました。
今回は、そのクラスなるものの説明をしたいと思います。
ただ、自分なりの解釈なので間違っていたらごめんなさん。
そもそも、クラスってなんで使うの?
何かの書籍に、同じ属性をもったものを複数扱う時に使うと書いてあった気がします。
同じ属性?単語の意味はわかっても、イメージできない。プログラミングの中で使うものの属性?
わからない。。。。
答えは簡単でした。
職場のスタッフを例えに説明したいと思います。
スタッフは複数人いて、それぞれに名前、性別、年齢、担当モダリティー、所有資格等様々な情報があります。それは、全員が持ち合わせている情報となります。その情報をクラスを使わずに使おうとするとそれぞれに変数名を割り当てるか、リストを作成して対応する場所に情報を格納しなくてはいけません。
変数が増えると、その管理がとても煩雑になりますし、変数を用いた計算をしたい時にそれぞれの変数に対してコードを書く必要ができコードが長くなってしまう事があります。
Aさん、Bさん、Cさん、Dさんを考えましょう。それぞれに変数名を作成してみると
A_name、 A_sex、 A_age、 A_moda、 A_capa
B_name、 B_sex、 B_age、 B_moda、 B_capa
C_name、 C_sex、 C_age、 C_moda、 C_capa
D_name、 D_sex、 D_age、 D_moda、 D_capa
と合計20個の変数が必要になってきます。
リストを使った場合は、何番目にどの情報を入れたか管理しなくてはならなくてとても面倒です。(私は、クラスが分からずにこの方法を取っていましたがすごく煩わしかったです。。。。)
しかし、クラスを使うことで同じ変数名の使いまわしができるようになります。ここから先は、使い方の方で説明していきたいと思います。
私は、以下の本で理解することができました。(Python関連の書籍ではないですが・・・・)クラスの部分だけ理解するのであれば本屋さんで立ち読みでも十分です。オブジェクト指向プログラミングの概要を簡単に知りたければお勧めの書籍です。
クラスの使い方
まずは、コードを
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
class Staff: def __init__(self,name,sex,age,moda,capa): self.name = name self.sex = sex self.age = age self.moda = moda self.capa = capa staff1 = Staff(‘A’,‘man’,’30’,‘MRI’,‘MRI technologist’) staff2 = Staff(‘B’,‘female’,’25’,‘Mammo’,‘Mammo technologist’) staff3 = Staff(‘C’,‘female’,’50’,‘CT’,‘CT technologist’) staff4 = Staff(‘D’,‘man’,’60’,‘Angio’,‘Angio technologist’) |
クラスを使用するにはまず、インスタンス(staff1やstaff2)といって箱のようなものを作成します。上記コードの10~13行目となります。今回の例では人物を設定します。その設定に名前、性別、年齢、担当モダリティー、所有資格等様々な情報を追加していきます。その作業が初期化にあたり
def __ini__():
の部分にあたります。
私は、ここでつまずきました。何故、selfを使うのか。
答えは簡単で、クラスは同じような物を複数個作成します。なので、同じ変数名も複数個作成されることになるので、自分自身の変数名と示しているのだと思います。ここは、おまじない的に覚えてしまうのがいいと思います。
後は、それぞれの値を使いたい時にインスタンス名(staff1やstaff2)に変数名
インスタンス名.変数名
で呼び出すことができます。例えば以下のようになります。
1 2 3 4 5 6 7 |
print(staff2.name + ‘ さんの所有資格は ’+ staff2.capa) ⇒ B さんの所有資格は Mammo technologist print(staff4.name + ‘ さんの年齢は ’+ staff4.age) ⇒ D さんの年齢は 60 |
いかがですか?
最後に
クラスを使うことで、同じ変数名を使用できる事はすごくすっきりしていいと思いませんか?
また、個人作成でのプログラミングではあまり大きな効果はないかもしれませんが数人でコードを作成していく時にはとても効果があるみたいです。
是非とも、クラスを使いこなして効率よくプログラミングをしていきましょう。
お疲れ様でした。
環境
- windows10
- python3.6.1
- Anaconda custom(64-bit)
- PyCharm2020.2(Communication Edition)