開発知識2018.11.5具体例で学ぶ、Pythonのclassの使い方TweetShare+1HatenaPocketRSSfeedlyTweetPythonではclassを活用してプログラミングができます。・何のためのものかイメージしづらい・どういうときに使いたいものなのかイメージしづらいと感じている方も多いのではないでしょうか。・クラスとはどういうものか・どういうときに使うものなのかについて説明し、具体的な使い方をコードを交えて解説します。イメージしやすいように、具体的な使用イメージがわくようなコード例、丁寧なコメントによる、初学者でも理解しながら実行できるコード例を心がけています。手元で実行しながら、できれば少しずつでもコードを改造しながらお読みいただけますと幸いです。Pythonについてはこちらもどうぞますます重要度をPython〜その実情と将来性に迫るclassとはclassを使用すると、関数を定義するときのように複数の処理や値をまとめておくことができます。classからは「インスタンス」というものが作成でき、インスタンスにはデータを保持させておくことができたり(属性)、関数のように処理をまとめておくことができたり(メソッド)します。このように、「1つのもの(オブジェクト)に情報や処理をひも付けて管理できる」のがclassです。「人間」というclassがあるとしましょう。人間classをひな形として1人1人の個人が作られます。・メソッド:食べる、寝るなどの項目が設定されている、というイメージです。classを作成しておくことで、似たようなインスタンスを自由に生み出すことができます。classの「継承」という機能を使うことで、とあるclassから派生したclassを作ることも簡単にできます。きなもの・メソッド:歩く、走る、話す、働くなどを追加することができます。このように、classを活用すれば・似たようなコードを繰り返し書く必要がなくなる・コードを再利用しやすい・機能を拡張しやすいという恩恵が得られます。classはどんなときに必要なのかclassはPythonを始めたばかりのころはあまりお世話にならないかもしれません。そのため「classを使わなくてもプログラミングできてる。classって何に使うんだろう...。」と疑問に思うことでしょう。classは「対象となる物」を作成し、対象物に関する情報や動きをひとまとめにして使い回すことができます。classが必要になる場面としてイメージしやすいのはゲーム制作です。ゲームでは登場人物や敵キャラ、使用する道具などさまざまなものが登場します。これら全て、固有の情報や動き方、使い方が備わっているため、それぞれの共通部分をclassにすることでコーディングが効率的になります。このように、多様なものをたくさん用意する必要がある場合にclassが威力を発揮します。そのため、ゲーム以外にも、何かしらの対象物を作成して扱う必要があればclassを活用できるでしょう。Pythonでいつもお世話になっているrandomやpandasなどといったモジュールでもクラスが活用されています。大規模な開発では、classを使用できるに越したことはないのです。Pythonにおけるclassの具体的な使い方それでは、具体例を元にPythonでのclassの使い方を見ていきましょう。今回はゲームの登場キャラクターのひな形になるclassを作成してみます。キャラクター共通の機能を持ったCharacterクラス、Characterクラスに追加機能を付けた「村人」(Villager)、「自キャラ」(Hiro)のclassを作成してみます。classの作り方まずはCharacterクラスを作成します。属性やメソッドを設定していないclassは以下のようになります。class名は大文字で開始し、単語を繋げるときはCharacterClassのように各単語の頭文字を大文字にします。デモのため、何もしないこれでCharacterクラスの定義ができました。chara1変数にCharacterインスタンスを作成とclassを変数に代入すればOKです。classの属性キャラクターには「名前」(name)、「年齢」(age)、「性別」(sex)という属性を付けることにします。属性は以下のように設定できます。chara1インスタンスのsex属性の値を’male’に設定chara1.nameという変数に値を代入したようなものなので、以下のように値を使用することもできます。print(chara1.name)1print(chara1.name)出力Kazuma1Kazuma別のインスタンスには別の値を設定できます。'female'print(chara2.name)出力Megumi1Megumiここまでではclassのありがたみはまだ感じられませんが、これから少しずつclassの利点が見えてきます。classのメソッドclassにはメソッドを定義することもできます。関数と同じくdef文を使用しますが、第1引数に「self」というオブジェクトを指定しておく点が特徴的です。selfはその名の通り「メソッドを呼び出したインスタンス自身」を指します。インスタンスを表す変数名はさまざまですが、それらを共通してselfとして表現しています。「メソッドの引数に自分自身を入れることで、自分自身に設定されている属性の値を利用できる」というイメージです。sex))、これらの情報をprintするメソッド(print_data(self))を設定してみましょう。selfには実際にはインスタンスが入る。属性の説明時に各属性に値を設定したのと同じこと。print("私は{}。