Pythonプログラミングにおける、クラスの使い方を学んでいきましょう。
少々むずかしい言葉が出てきますが、分かりやすくご説明しますので、安心してお読みください。
クラス、メソッドについて
Pythonプログラミングにおいての「クラス」は、いろんなデータや機能が、集まったもののことです。
そして「メソッド」は、そのクラスが持った機能のことです。
と、言われましても、いまいちピンとこないと思います。
そこで、いろんな人たちの集まりを想像してみてください。
勉強が得意な人、歌が上手な人、絵が得意な人、運動が得意な人……いろんな人がいます。
この人たちをクラス分けしてみましょう。
- Scholar(学者クラス)
- Singer(歌い手クラス)
- Illustrator(画家クラス)
- Athlete(アスリートクラス)
例えば「Singer(歌い手クラス)」であれば、「歌」が得意です。
「歌が得意」ということは、歌うための技を、いろいろ持っています。
ビブラート、しゃくり、ウィスパーボイス、シャウト、などです。
ある「クラス」の中で使える、こういった技が、「メソッド」です。
(ビブラート:声を震わせる技、しゃくり:実際の音よりちょっと低い声から入って本当の音に戻す技、ウィスパーボイス:ささやくような声で歌う技、シャウト:叫ぶように歌う技)
インスタンスについて
もうひとつ、覚えておきたい言葉があります。
それは「インスタンス」です。
インスタンスは、クラスを実体化したものです。
……プログラミング用語って、曖昧な言葉でしか表せないようなものばかりなので、こんなこと言われても分からなくて当然です。
さきほど、いろんな人を、いろんなクラスに分けました。
「Singer(歌い手クラス)」であれば、歌が得意な人たちのクラスですね。
では、歌が好きだけど、まだ得意ではない人が、このクラスに入ったらどうでしょう。
きっと周りの人たちと一緒に練習して、どんどん歌がうまくなると思います。
そして「Singer(歌い手クラス)」が使える技、ビブラート、しゃくり、ウィスパーボイス、シャウトも、使えるようになります。
この「クラスによって技を身につけた人」こそが、「インスタンス」です。
(実際のプログラミングでは、「人」ではなく「もの」だったりすることも多いです。ただ、ここではイメージしやすいように、「人」として進めていきます)
クラスを作ってみよう!
では、実際にクラスを作ってみましょう。
ここでは、さきほどの例の、Singer
(歌い手)クラスを作ってみたいと思います。
# 歌い手クラス
class Singer:
def __init__(self, name):
self.name = name
def vibrato(self):
print(f'{self.name}はビブラートを使いました')
def slide_up(self):
print(f'{self.name}はしゃくりを使いました')
def whisper(self):
print(f'{self.name}はウィスパーボイスを使いました')
def shout(self):
print(f'{self.name}はシャウトを使いました')
# インスタンスを作る
sachiko = Singer('さちこ')
# 技を使う
sachiko.vibrato()
sachiko.shout()
上の例の、2〜16行目が、Singer
(歌い手)クラスです。
そのクラスの中の、最初がdef
となっているブロックが、それぞれ「メソッド」です。
関数にとてもよく似ていますが、それぞれの引数すべてに、self
と書かれています。self
は「自分自身」を表します。
さて、メソッドの中に、ほかのとはちょっと違うメソッドがひとつあります。
それは、3〜4行目の、この部分です。
def __init__(self, name):
self.name = name
これは、初期設定のためのメソッドです。self.name
に、name
の値を代入していますね。
つまり、「自分自身のname
」に「name
」を代入していることになります。
この「name
」は、__init__
メソッドの引数です。
では、「name
」にはなにが代入されているのでしょうか。
それは、20行目を見ると分かります。
# インスタンスを作る
sachiko = Singer('さちこ')
これは、Singer
クラスのインスタンスを作っている部分です。Singer
の後ろの()
に、'さちこ'
の文字列が入っています。
つまり、さきほどの__init__
メソッドの引数であるname
には、「'さちこ'
」が入っていました。
さて、「インスタンス」は、「クラスによって技を身につけた人」のことでしたね。
つまり、sachiko
は、Singer
(歌い手)としての技が使えます。
そして、実際にその技を使ったのが、23〜24行目です。
# 技を使う
sachiko.vibrato()
sachiko.shout()
sachiko.vibrato()
でビブラートを、sachiko.shout()
でシャウトを使っています。
そして、実行結果は次のようになります。
実行結果
さちこはビブラートを使いました
さちこはシャウトを使いました