libro
www.tuyano.com
初心者のためのPython入門

クラスを作ろう! (3/6)

作成:2017-06-03 14:23
更新:2017-06-03 14:23

■インスタンスとself

クラスというのは、関数などのように、そのままクラスからメソッドを呼び出したりして使うわけではありません。クラスを利用するためには、「インスタンス」というものを作ります。
  
クラスというのは、いわばプログラムの「設計図」なのです。これ自体を操作するのではなくて、このクラスという設計図をもとに、実際に利用することのできる部品を作って、それを操作するんですね。この部品がインスタンスなのです。
  
もし、クラスをそのまま使うとすると、そのクラスの機能をいくつも使いたければ、たくさんクラスを作らないといけなくなります。例えば、サンプルのMemberクラスを使って、「Taro」と「Hanako」のデータを管理させようとした、と考えてください。クラスをそのまま使うとなると、そのnameに「Taro」と設定したら、もうHanakoは保管できなくなってしまいますね。
  
そこで、クラスを元に「インスタンス」という部品を作り、それにTaroと設定してやるのです。Hanakoが必要になったら、またクラスから新しいインスタンスを作って、それにHanakoと設定してやります。こんな具合に、「Memberクラスを使う必要があれば、新しくMemberのインスタンスを作って、名前を設定してやる」のです。こうすれば、このクラスを元に、いくらでもデータを扱えるようになります。  
  
そして、このインスタンス自身を指し示すのに用意されるのが「self」というわけです。
  
例えば、あるメソッドの中で、「このインスタンスに保管されているメンバー変数の値を使いたい」と思ったとしましょう。この例で言うなら、Memberにあるnameの値を、showmsgの中で使いたい、というときですね。

このとき、ただ「name」という変数名では使えないのです。「このインスタンスの中にあるname」という形で指定をしてやらないといけません。
  
そこで、Pythonのクラスに用意されるメソッドでは、必ず最初の引数に、インスタンス自身を示す値が渡されるようになっています。これが「self」の正体というわけです。このselfの中にあるメンバー変数やメソッドは、
 self.◯◯ 

このように、selfの後にドットを付けて指定することができます。例えば、ここでは「self.name」というようにしてnameメンバー変数を指定し、利用している、というわけです。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

 class Member: 
     name = "" 
   
     def showMsg(self): 
         print("Hello," + self.name + ".How are you?") 
※関連コンテンツ

「初心者のためのPython入門」に戻る