「インスタンス化って聞いたけど、インスタンスって結局何なの?」
プログラミングを学び始めた人が最初に感じる疑問のひとつですよね。
今回は ロボットの例え を使って、インスタンスやインスタンス化について詳しく解説していきます!
インスタンスって何?
プログラミングでは、「インスタンス」は 「クラス」 という設計図を元に作られた 具体的なモノ のことです。
例えばロボット工場をイメージしてみましょう。
クラス(設計図)
ロボットを作るための「設計図」のことです。この設計図には、ロボットが「何ができるか」「どんな特徴を持つか」が書かれています。
インスタンス(実体)
実際に工場で組み立てられたロボットそのものです。同じ設計図を使っても、それぞれのロボットには違う名前や動作を設定できます。
インスタンス化(組み立て作業)
設計図を使って、ロボットを実際に組み立てるプロセスのことを「インスタンス化」と呼びます。
ロボット工場の具体例
1. 設計図(クラス)を作る
例えば、以下のような設計図を用意します。
このロボットは「名前」と「あいさつ機能」を持っています。
class Robot:
def __init__(self, name):
self.name = name # ロボットの名前を設定
def greet(self):
print(f"こんにちは!私はロボット「{self.name}」です!")
ポイント:
- クラスはあくまで「設計図」なので、このままではロボットを動かすことはできません。
- 実際にロボットを作るには「インスタンス化」が必要です。
2. ロボットを組み立てる(インスタンス化)
次に、この設計図を元にロボットを作ります。これが「インスタンス化」です。
robot1 = Robot("アイボ") # 1体目のロボットを作成
robot2 = Robot("ペッパー") # 2体目のロボットを作成
ここで何が起きている?
-
Robot("アイボ")
を実行すると、クラスの__init__
メソッド(初期化メソッド)が呼ばれます。 - このとき、
name="アイボ"
が設定され、「アイボ」という名前を持つロボット(インスタンス)が完成します。
__init__ メソッド(初期化メソッド) については、以下の記事を参照してください。
Pythonのクラスのselfの使い方については、以下の記事を参照してください。
3. ロボットを動かす(インスタンスの利用)
作ったロボットを使ってみましょう。
robot1.greet() # → こんにちは!私はロボット「アイボ」です!
robot2.greet() # → こんにちは!私はロボット「ペッパー」です!
ここでは、それぞれのインスタンス(robot1
、robot2
)が動作しています。
インスタンス化を3つのステップで理解しよう!
1. 設計図を用意する
- クラスとして、ロボットの名前や機能を定義します。
- 例: 「名前を覚える」「あいさつする」機能など。
2. インスタンスを作る
- クラス(設計図)を使って実際にロボットを作成します。
- 例: 「アイボ」という名前のロボットを作る。
3. インスタンスを使う
- 作成したインスタンスを操作して、ロボットを動かします。
- 例: 「あいさつする」機能を呼び出す。
💡 インスタンス化のポイント
同じ設計図から異なるロボットを作れる
例えば、アイボとペッパーは同じ Robot
クラスを使って作られていますが、それぞれ名前が異なります。
インスタンスごとに独立したデータを持てる
robot1
(アイボ)の名前を変更しても、robot2
(ペッパー)には影響を与えません。
もう少し複雑な例
ロボットにさらに「歩数を記録する機能」を追加してみます。
class Robot:
def __init__(self, name):
self.name = name # 名前
self.steps = 0 # 歩数
def walk(self, steps):
self.steps += steps
print(f"{self.name}は{steps}歩歩きました。合計: {self.steps}歩")
これを使うと、ロボットごとに歩数を記録できます。
robot1 = Robot("アイボ")
robot2 = Robot("ペッパー")
robot1.walk(10) # → アイボは10歩歩きました。合計: 10歩
robot2.walk(5) # → ペッパーは5歩歩きました。合計: 5歩
robot1.walk(3) # → アイボは3歩歩きました。合計: 13歩
まとめ:インスタンス化をマスターしよう!
- クラス はロボットの設計図、インスタンス は具体的なロボット。
- インスタンス化 とは、設計図からロボットを作るプロセス。
- インスタンスごとに独立したデータや機能を持たせることができる。
これで「インスタンス化」が何をしているのか、しっかり理解できましたね!
ロボットをどんどん作りながら、プログラミングを楽しんでください!✨