1. HOME»
  2. Python入門»
  3. クラスを使ってみよう!

クラスを使ってみよう!

Pythonパイソンプログラミングにおける、クラスの使つかかたまなんでいきましょう。
少々しょうしょうむずかしい言葉ことばてきますが、かりやすくご説明せつめいしますので、安心あんしんしておみください。

目次
  1. クラス、メソッドについて
  2. インスタンスについて
  3. クラスを作ってみよう!

クラス、メソッドについて

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()でシャウトを使っています。
そして、実行結果じっこうけっかつぎのようになります。

実行結果

さちこはビブラートを使いました
さちこはシャウトを使いました
オリジナルゲーム.com