【Python初心者】class(クラス)をちゃんと理解してる?僕は全くわからなかったので徹底的に調べてみた。
2019.06.22
「Python の class って何!?」
という、初心者Pythonエンジニア向けに、たびんちゅうプログラマーのカンが、Pythonのclassについて説明していきます。
なお、classのメソッド定義のselfに関しては勉強中なので、回答できません。
では早速解説していきます。
クラスとは
一言で言えば「型」です。
「型」については、車の例えで説明します。
車を毎回ゼロから設計するよりも、「設計書」を作った方が量産できます。
python でも、関数を使いまわすことは頻繁に行われるため、「型(クラス)」を作った方が、効率的で、かつ見た目が綺麗なコードができます。
そして、クラスから作られたオブジェクトを「インスタンス」と言います。
語句についてまとめると、次のようになります。
- クラス:型(設計書)
- インスタンス:クラスから生まれたオブジェクト
- オブジェクト:全てのもの・こと
「オブジェクトってなに?」という方は、「 オブジェクトとインスタンスって何が違うの?という初心者プログラマー向けの図解」をご確認ください。
Pythonでのclassの機能と使用方法
classは、「定義」と「呼び出し」の機能があります。
【クラスの機能】
- 定義:クラス名、メソッド名
- 呼び出し:メソッド
「メソッド」とは、「クラス内にある関数」を指します。
classを実際に使用すると、次のようになります。
class クラス名: #クラスの定義
def メソッド名(self): #メソッドの定義
# 例文
class Hello:
def voice(self):
print("Hello!")
def shout(self):
print("Woo!")
say = Hello()
say.voice()
say.shout()
# 結果
Hello!
Woo!
上記をまとめると、次のようになります。
- クラス名:Hello
- メソッド名:voice
- メソッド:print(“Hello!)
- インスタンス化:Hello()
クラス名とメソッド名を定義すれば、「クラス名.メソッド名()」で、自由にメソッドを使うことができるのです。
小規模な開発の場合は、「クラスなんて必要ないじゃん」と思うかもしれないですが、大規模な開発になると、関数を使いまわすことは頻繁に起こります。
その都度、関数を書くのは作業効率的にも、ソースコードの見た目的にもよろしくないので、クラスを使う習慣は慣れておきましょう。
selfって何?
「メソッド定義のselfって何?」という疑問に対してお答えしたいのですが、申し訳ございません、ただいま勉強中です。
ただ、下記2つはわかりました。
- 実は、selfじゃなくてもいい
- 必要
面白いことに、selfじゃなくても問題ないんです。
先ほどのソースコードに、selfではなく、aaaを代入しても、問題なく同じ結果が返ってきます。
class Hello:
def voice(aaa):
print("Hello!")
def shout(aaa):
print("Woo!")
say = Hello()
say.voice()
say.shout()
# 結果
Hello!
Woo!
ただ、慣習的にselfを使用するので、selfを使えばいいと思います。
また、selfがないと、エラーになります。
この2つだけ覚えておけば、まあ問題ないです。(無責任)
class(クラス)まとめ
classについてまとめると、次のようになります。
- classは型を意味する
- classは「作業効率」と「ソースコードの美しさ」という観点から必要
- classには「定義」と「呼び出し」の機能がある
- メソッド定義に、とりあえずselfは書いておけ
以上です。
selfに関しては、わかり次第付け足そうと思います。