クラスを作ろう! (5/6)
作成:2017-06-03 14:28
更新:2017-06-03 14:28
更新:2017-06-03 14:28
■コンストラクタを使おう
それにしても、このMemberクラス、今ひとつ便利ではないですね。インスタンスを作って、nameを設定して、showMsgを呼び出して……。結局、1つ1つやってることは、クラスを使わない場合とたいして違いありません。それに、インスタンスを作ったあとでメンバー変数の設定を忘れたりすると、思ったように動かなくなってしまいますし……。せめて「必要な値は最初からきちんと設定して使える」ようにしたいものですね。
こんなときに役立つのが「コンストラクタ」というものです。コンストラクタは、「インスタンスを作成する際に自動的に呼び出される、インスタンス初期化のための特別なメソッド」です。これは以下のように作成します。
コンストラクタは、「__init__」という名前のメソッドとして作成します。もし、何らかの値を引数で渡したければ、第2引数以降に指定をします(第1引数は必ずselfですからね)。
このようにしてコンストラクタを用意すると、インスタンスを作成するときに、このコンストラクタを使うようになります。下のサンプルを見てください。
ここでは、以下のようにして、strという引数を渡す形でコンストラクタを用意しています。
これで、インスタンスを作るときにnameを設定してしまおう、というわけです。実際にインスタンスを作っているところを見ると、
こんな具合に、()内に名前が引数として用意されるようになっているのがわかります。こうやって、引数を指定してインスタンスを作れるようにすると、必要なメンバー変数の設定なども一度にまとめて行うことができ、とても便利ですね。
こんなときに役立つのが「コンストラクタ」というものです。コンストラクタは、「インスタンスを作成する際に自動的に呼び出される、インスタンス初期化のための特別なメソッド」です。これは以下のように作成します。
def __init__(self, 引数……):
……初期化処理……
コンストラクタは、「__init__」という名前のメソッドとして作成します。もし、何らかの値を引数で渡したければ、第2引数以降に指定をします(第1引数は必ずselfですからね)。
このようにしてコンストラクタを用意すると、インスタンスを作成するときに、このコンストラクタを使うようになります。下のサンプルを見てください。
ここでは、以下のようにして、strという引数を渡す形でコンストラクタを用意しています。
def __init__(self, str):
これで、インスタンスを作るときにnameを設定してしまおう、というわけです。実際にインスタンスを作っているところを見ると、
taro = Member("Taro")
こんな具合に、()内に名前が引数として用意されるようになっているのがわかります。こうやって、引数を指定してインスタンスを作れるようにすると、必要なメンバー変数の設定なども一度にまとめて行うことができ、とても便利ですね。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
class Member: name = "" def __init__(self, str): self.name = str def showMsg(self): print("Hello," + self.name + ".How are you?") taro = Member("Taro") taro.showMsg() hanako = Member("Hanako") hanako.showMsg()
※関連コンテンツ