Python 入門 | クラスの利用 | コンストラクターの利用

それでも、この Member クラスはあまり便利ではない。インスタンスを作成し、name を設定してから showMsg を呼び出すという手順を毎回実行する必要があり、クラスを使わない場合と大きな違いがない。さらに、インスタンスを作成した後でメンバー変数の設定を忘れると、期待したとおりに動作しなくなる。少なくとも、必要な値は最初から正しく設定できるようにしたい。

このような場合に役立つのがコンストラクター(constructor)である。コンストラクターは、インスタンスの作成時に自動的に呼び出される、インスタンス初期化用の特別なメソッドである。次のように定義する。

def __init__(self, 引数...):
    ... 初期化処理 ...

コンストラクターは __init__ という名前のメソッドとして定義する。値を引数として渡す場合は、2 番目以降の引数に指定する。最初の引数は必ず self である。

コンストラクターを用意すると、インスタンスの作成時にこのコンストラクターが使われる。次の例を見てみよう。

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()

この例では、str という引数を受け取るコンストラクターを定義している。

def __init__(self, str):

これで、インスタンスを作成するときに name の値を指定する必要がある。実際にインスタンスを作成している箇所を見てみよう。

taro = Member("Taro")

括弧の中に名前を引数として渡している。このように、インスタンスの作成時に引数を指定できるようにすると、必要なメンバー変数も同時に初期化できるため便利である。