クラスを作ろう! (4/6)
作成:2017-06-03 14:26
更新:2017-06-03 14:26
更新:2017-06-03 14:26
■Memberクラスを使ってみよう!
では、作成したMemberクラスを利用してみましょう。下のリストに利用例をあげておきます。ここではTaroとHanakoという2人のデータを扱うために、2つのインスタンスを作って利用しています。
インスタンスの作成は、「クラス名()」というようにして呼び出します。ここでは、
こんな具合に呼び出していますね。これで、変数taroに、Memberクラスのインスタンスが作成され保管されます。また、インスタンス内のメンバー変数やメソッドは、ドットを使って変数名の後にそれらを続けて記述し呼び出します。例えば、
これは、taroインスタンスのnameメンバー変数に"Taro"と値を設定してやり、それからshowMsgメソッドを呼び出して実行しているわけです。こんな具合に、インスタンスを作って変数に代入しておけば、クラスの中にある要素は自由に使えるようになります。
なお、このnameのように、インスタンスごとに値を保管して利用するようなメンバー変数を「インスタンス変数」とも呼びます。
ところで、この利用例を見て、何か疑問を感じなかったでしょうか? それは、showMsgを呼び出している部分です。「taro.showMsg()」となっていますね。
――あれ? showMsgって、第1引数に「self」が用意されていませんでしたか? あのselfは一体、どうなったのでしょうか。
実を言えば、メソッドの第1引数として渡される「インスタンス自身」の値は、Pythonのシステムによって自動的に引き渡されるようになっているのです。つまり、第1引数(self)は、メソッドを呼び出す際には不要なのです。呼び出すときは、第2引数以降のみを記述します。(ここでは、第1引数しか無いので、呼び出すときは引数は不要になります)
――こんな具合に、インスタンスを作り、その中のメンバー変数を設定し、メソッドを呼び出す。これが「クラスを利用する」ということの基本になります。これらの基本操作がわかれば、クラスは簡単に利用できます。
インスタンスの作成は、「クラス名()」というようにして呼び出します。ここでは、
taro = Member()
こんな具合に呼び出していますね。これで、変数taroに、Memberクラスのインスタンスが作成され保管されます。また、インスタンス内のメンバー変数やメソッドは、ドットを使って変数名の後にそれらを続けて記述し呼び出します。例えば、
taro.name = "Taro"
taro.showMsg()
これは、taroインスタンスのnameメンバー変数に"Taro"と値を設定してやり、それからshowMsgメソッドを呼び出して実行しているわけです。こんな具合に、インスタンスを作って変数に代入しておけば、クラスの中にある要素は自由に使えるようになります。
なお、このnameのように、インスタンスごとに値を保管して利用するようなメンバー変数を「インスタンス変数」とも呼びます。
selfはどこにいった?
ところで、この利用例を見て、何か疑問を感じなかったでしょうか? それは、showMsgを呼び出している部分です。「taro.showMsg()」となっていますね。
――あれ? showMsgって、第1引数に「self」が用意されていませんでしたか? あのselfは一体、どうなったのでしょうか。
実を言えば、メソッドの第1引数として渡される「インスタンス自身」の値は、Pythonのシステムによって自動的に引き渡されるようになっているのです。つまり、第1引数(self)は、メソッドを呼び出す際には不要なのです。呼び出すときは、第2引数以降のみを記述します。(ここでは、第1引数しか無いので、呼び出すときは引数は不要になります)
――こんな具合に、インスタンスを作り、その中のメンバー変数を設定し、メソッドを呼び出す。これが「クラスを利用する」ということの基本になります。これらの基本操作がわかれば、クラスは簡単に利用できます。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
class Member: name = "" def showMsg(self): print("Hello," + self.name + ".How are you?") taro = Member() taro.name = "Taro" taro.showMsg() hanako = Member() hanako.name = "Hanako" hanako.showMsg()
※関連コンテンツ