このページで解説している内容は、以下の 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
クラスのインスタンスを生成するときに、必ず species
と age
の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
を用いることで、各オブジェクト固有の属性に値を代入できる。- 同一クラスから生成されるオブジェクトは、一貫した属性構造を持つため、プログラムの整合性と保守性が向上する。
これらの基本概念を理解することで、より堅牢で拡張性の高いオブジェクト指向プログラミングの実践が可能となります。