【Python】__init__とは?インスタンスの初期値を設定するメソッド

みなさんこんにちは、ZeroTerasu(@ZeroTerasu)です。

表題の件、結論から言いますと、__init__は、コンストラクタと呼ばれるメソッドであり、クラスをインスタンス化する際にインスタンスの初期設定を行うメソッドになります。

人間というクラスを例に解説されることが多いので、ここでもclass Person()を例にして解説します。

このPerson()というクラスは、個別の人間を生成する設計図と考えて下さい。

このPerson()という設計図を基にして、TaroやHanakoのように個別の人が生成されます。この個別の人が生成されることをインスタンス化と呼び、生成される個別の人のことをインスタンスと呼びます。

また、人間には、名前、年齢、性別のように人それぞれに固有の属性があります。

コンストラクタは、これらの属性をインスタンス化の際に初期設定する役割を担うメソッドになります。

class Person():
    def __init__(self, name, age, gender):
        self.myname = name
        self.myage = age
        self.mygender = gender
    def self_introduce(self):
        print(f"私の名前は{self.myname}です。年齢は{self.myage}です。性別は{self.mygender}です。")

Taro = Person('Taro', 40, '男性')
Taro.self_introduce()

selfという変数はインスタンス自身を表す変数です。

上記の例では、Person()という設計図の中に、name, age, genderを初期設定するコンストラクタ(def __init__(self, name, age, gender))が設定されています。

このコンストラクタの意味するところは、下記のようになります。

①self.myname = name (インスタンスの”myname”という属性には、引数で引き渡された”name”を格納します。

②self.myage = age (インスタンスの”myage”という属性には、引数で引き渡された”age”を格納します。

③self.mygender = gender (インスタンスの”mygender”という属性には、引数で引き渡された”gender”を格納します。

そして、Taro=Person()の引数に初期値を引き渡してTaroというインスタンスを生成しています。

インスタンスは、親クラス(インスタンス=Taro、親クラス=Person)のメソッドを使用することが出来ますので、親クラスのself_introduction()を使用して自己紹介文を出力しています。

コメント

タイトルとURLをコピーしました