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