このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Python入門】init メソッドによるオブジェクトの初期化

init メソッドによるオブジェクトの初期化

 Pythonのオブジェクト指向プログラミングでは、オブジェクト生成と同時にその内部状態を初期化することが非常に重要です。これを実現するための仕組みが __init__ メソッド です。__init__ メソッドは、オブジェクトが生成された直後に自動で呼び出され、各オブジェクトのデータ属性を初期化する役割を担います。ここでは、__init__ メソッドの基本的な動作や、その書き方、そして実際の利用例について、表や具体的なコード例を用いて詳しく解説していきます。

プログラムのダウンロード

 「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。

1.init メソッドの基本概念

1.1. init メソッドの役割と特徴

 __init__ メソッドは、クラスから新しいオブジェクトが生成される際に自動的に呼ばれる特殊なメソッドです。C++やJavaのコンストラクタに相当し、以下のような役割を持ちます。

  • 初期化: オブジェクトが持つべきデータ属性に初期値を設定します。
  • 統一性の確保: 同一クラスから生成されるすべてのオブジェクトが、同じ属性構造を持つことを保証します。

以下の表は、__init__ メソッドの主な特徴をまとめたものです。

特徴説明
自動呼び出しオブジェクト生成時に自動で実行され、明示的な呼び出しは不要
初期化処理オブジェクトの内部状態(データ属性)に初期値を設定する。
コンストラクタ的役割他の言語でいう「コンストラクタ」と同様の役割を果たす。

1.2. self の意味と初期化の仕組み

 __init__ メソッドの最初の引数には、必ず self が指定されます。self は生成されたオブジェクト自身を指し、これを通してデータ属性を初期化するために使用されます。たとえば、self.attribute = 値 と記述することで、そのオブジェクト固有の attribute に値が保存されます。

この仕組みは、他のオブジェクト指向言語での this に相当します。

2.init メソッドを用いた実践例

2.1. Animal クラスの定義と初期化

 ここでは、動物を表現するためのクラス Animal を例に、__init__ メソッドを利用してデータ属性を初期化する方法を解説します。
 以下のコードでは、Animal クラスの __init__ メソッドが、動物の種類(species)と年齢(age)を初期化します。

class Animal:
    def __init__(self, species, age):
        # オブジェクト生成時に、speciesとageの値を受け取り、データ属性を初期化する
        self.species = species  # 動物の種類を表す属性
        self.age = age          # 動物の年齢を表す属性

 この例では、Animal クラスのインスタンスを生成するときに、必ず speciesage の2つの値を渡す必要があります。これにより、各オブジェクトは一貫した属性構造を持ち、初期状態が保証されます。

2.2. 複数のオブジェクトの初期化例と詳細解説

 次に、Animal クラスを使って2つのオブジェクトを生成し、それぞれのデータ属性を表示する例を示します。
 以下のプログラムは、1つ目のオブジェクトとして "Cat"(猫)と年齢 3、2つ目のオブジェクトとして "Dog"(犬)と年齢 5 を初期化しています。

# Animalクラスからオブジェクトを生成し、変数catに代入する
cat = Animal("Cat", 3)
# 生成されたcatオブジェクトのspeciesとage属性を表示する
print(cat.species, cat.age)  # 出力例: Cat 3

# Animalクラスから別のオブジェクトを生成し、変数dogに代入する
dog = Animal("Dog", 5)
# 生成されたdogオブジェクトのspeciesとage属性を表示する
print(dog.species, dog.age)  # 出力例: Dog 5

実行結果

Cat 3
Dog 5

このコードの動作について詳しく解説します。

  • オブジェクト生成
    cat = Animal("Cat", 3) により、Animal クラスの __init__ メソッドが自動的に呼び出され、cat オブジェクトの species 属性に "Cat"age 属性に 3 が設定されます。
    ・同様に、dog = Animal("Dog", 5)dog オブジェクトが生成され、属性が初期化されます。
  • 属性の参照
    print(cat.species, cat.age) は、cat オブジェクトに保存されたデータ属性の値を出力します。これにより、各オブジェクトの初期状態が確認できます。

まとめ

 ここでは、__init__ メソッドを利用してオブジェクト生成時にデータ属性を自動的に初期化する方法について解説しました。

  • __init__ メソッドはオブジェクト生成時に自動的に呼び出され、必要な初期値を設定する。
  • self を用いることで、各オブジェクト固有の属性に値を代入できる。
  • 同一クラスから生成されるオブジェクトは、一貫した属性構造を持つため、プログラムの整合性と保守性が向上する。

 これらの基本概念を理解することで、より堅牢で拡張性の高いオブジェクト指向プログラミングの実践が可能となります。