Pythonでクラスを学ぶと、必ず出てくるのが 「__init__」 という不思議なメソッド。
「これって何をしているの?」
「何のために必要なの?」
そんな疑問を解決するために、今回はロボットを例にしながら、やさしく解説していきます!
🤔 「__init__」ってそもそも何?
Pythonの「__init__」は、クラスから ロボット(オブジェクト)を作ったときに、最初に実行される特別な関数(メソッド) です。
「初期化メソッド」 とも呼ばれ、ロボットが生まれた瞬間に、
名前や型番をセットしたり、動くための準備をするのが役目です。
🦾 クラスをロボット工場に例えてみよう!
Pythonのクラスは、ロボットを作る 工場 だと考えてみてください。
- クラス → ロボットの設計図(どんな機能を持つか決める)
- オブジェクト → 実際に工場で製造されたロボット
- 「__init__」 → ロボットを組み立てる作業(名前や機能を設定する)
つまり、「__init__」がないと、ロボットが 何も設定されていない状態 になってしまうのです。
✍ ロボットの設計図(クラス)を作ってみよう!
class Robot:
def __init__(self, name, model):
self.name = name # ロボットの名前
self.model = model # ロボットの型番
def introduce(self):
print(f"こんにちは!私はロボット「{self.name}」、型番「{self.model}」です!")
コード中のselfについてわからない方は、以下の記事を参考にしてください。
🏭 ロボットを作ってみよう!
さあ、工場からロボットを製造してみます。
robot1 = Robot("アイボ", "AIBO-1000")
robot2 = Robot("ペッパー", "PEPPER-2000")
robot1.introduce()
# → こんにちは!私はロボット「アイボ」、型番「AIBO-1000」です!
robot2.introduce()
# → こんにちは!私はロボット「ペッパー」、型番「PEPPER-2000」です!
💡 「__init__」がやっていること
- ロボットが 作られた瞬間 に、自動で「名前」と「型番」を設定。
- 各ロボットが、異なる情報を持てる ようになる。
- 作ったあとに手動で設定する手間を省ける!
「__init__」がないとどうなるの?
もし、「__init__」がなかったら、ロボットは工場から出てきても 空っぽの状態 になります。
class Robot:
def introduce(self):
print(f"こんにちは!私はロボット「{self.name}」、型番「{self.model}」です!")
これを実行すると…
robot = Robot()
robot.name = "ソフィア"
robot.model = "SOPHIA-3000"
robot.introduce()
# → こんにちは!私はロボット「ソフィア」、型番「SOPHIA-3000」です!
⚠️ 手動で設定しないと使えないので不便!
ロボット工場なのに、製品が未完成のまま出荷されてしまうことになります。
🎯 「__init__」の3つの役割
-
ロボットの初期設定を自動で行う
名前や型番をすぐ設定できる! -
コードのミスを減らす
毎回手動でデータを入れなくてもOK! -
プログラムをシンプルにする
ロボットの設計がスッキリして分かりやすい!
🛠 デフォルト値を設定してみよう!
時には、ロボットの名前や型番に デフォルト値 を設定したいこともありますよね?
それも「__init__」で解決できます!
class Robot:
def __init__(self, name="ノーネーム", model="UNKNOWN"):
self.name = name
self.model = model
def introduce(self):
print(f"こんにちは!私はロボット「{self.name}」、型番「{self.model}」です!")
🦾 デフォルト値を試してみよう!
robot1 = Robot()
robot2 = Robot("ターミネーター", "T-800")
robot1.introduce()
# → こんにちは!私はロボット「ノーネーム」、型番「UNKNOWN」です!
robot2.introduce()
# → こんにちは!私はロボット「ターミネーター」、型番「T-800」です!
💡 ポイント
引数なしでロボットを作ると、デフォルトの値が入る!
必要な時だけ名前や型番を指定できる!
🚀 「__init__」を使いこなそう!
「__init__」があれば、
たくさんのロボットを効率よく 生産&管理
できます!
プログラムの規模が大きくなっても、オブジェクト(ロボット)をしっかり整理できるのが魅力です。
まとめ:__init__ のポイント
- クラスを使ってロボットを作ると、 最初に実行される特別な関数!
- オブジェクトの 名前や型番などを自動で設定できる!
- デフォルト値を使えば、 省略可能なデータも管理しやすい!
これで「__init__」がロボットの組み立てにどれだけ役立つのか、
しっかり理解できましたね!Pythonを使って、
自分だけのロボットをどんどん作ってみてくださいね!🚀