29
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

100万記事ありがとう!2025年もたくさんアウトプットしよう

Pythonのクラスのselfの使い方とは?ロボットに例えて解説!

Last updated at Posted at 2025-01-24

Pythonの「self」は、クラスの中で 「自分自身」 を指し示す特別なキーワードです。

もし、友達に「自分の名前を言って!」と聞いたら、普通は「僕の名前は○○です」と答えますよね?この 「僕」や「私」 にあたるのが、Pythonの「self」なんです。

クラスとは?ロボットに例えてみよう!

Pythonでは、クラス(class)を使って「オブジェクト(もの)」を作ります。これを ロボット に例えてみましょう!

🛠 クラスとオブジェクトの関係

  • クラス → 設計図(ロボットの設計図のようなもの)
  • オブジェクト → 実際に作られたロボット(設計図から作られたもの)
  • 「self」 → それぞれのロボットの識別番号(自分がどのロボットかを区別するための名札)

例えば、同じ「ロボットの設計図」から何体もロボットを作ったとしても、
それぞれのロボットには 「どのロボットなのか?」 を区別する必要がありますよね?

Pythonでは、クラスの中でデータ(例えば名前や動作回数)を保持するときに、
「これは 自分のロボットのデータ だよ!」と区別するために「self」を使うんです。

実際のコードを見てみよう!

例えば、「ロボット」を作るクラスを考えてみます。

class Robot:
    def __init__(self, name, model):
        self.name = name  # 自分の名前(名札)
        self.model = model  # 自分の型番

    def introduce(self):
        print(f"こんにちは!私はロボット「{self.name}」、型番「{self.model}」です!")

🚀ロボットを作ってみる

このクラスを使って、2体のロボットを作ってみます。

robot1 = Robot("アイボ", "AIBO-1000")  
robot2 = Robot("ペッパー", "PEPPER-2000")  

robot1.introduce()  # → こんにちは!私はロボット「アイボ」、型番「AIBO-1000」です!
robot2.introduce()  # → こんにちは!私はロボット「ペッパー」、型番「PEPPER-2000」です!

💡 ポイント
ロボットが複数いると、それぞれのロボットの名前や型番を区別する必要があります。
例えば、robot1 は「アイボ」、robot2 は「ペッパー」ですが、
「self.name」がなければ、ロボット自身が 「どのロボットの名前なのか?」 を理解できなくなります。

robot1と robot2は同じ「ロボットの設計図」から作られたけど、
self」のおかげで、 アイボとペッパーが別のロボット だと区別できる!

「self」がないとどうなる?

もし「self」を使わなかったら…?

class Robot:
    def __init__(name, model):  # ← selfがない!
        name = name  # 誰の名前かわからない!
        model = model

    def introduce():
        print(f"こんにちは!私は{name}、型番「{model}」です!")  # エラー発生!

このコードを実行すると、エラーになってしまいます。

ロボットに名前を設定しても、Pythonは 「誰の名前?」 と混乱してしまい、エラーが出ます。

「self」の役割を3つにまとめる!

1. 自分のものを識別するためのラベル

self.name「このロボットの名前だよ!」 という意味。

2. クラス内のデータを保持できる

例えば、self.model に型番を保存しておけば、どこでも使える。

3. クラスのメソッド(関数)からデータにアクセスする

self があれば、他のメソッド(関数)でも 「自分のデータ」 を使える。


もう少し複雑にした例

ロボットに「歩く機能」を追加してみます!

class Robot:
    def __init__(self, name):
        self.name = name
        self.steps = 0  # 自分の歩数を記録

    def walk(self):
        self.steps += 1  # 自分の歩数を増やす
        print(f"{self.name}は歩きました!現在の歩数: {self.steps}")

ロボットを動かしてみる!

robot1 = Robot("アシモ")

robot1.walk()  # → アシモは歩きました!現在の歩数: 1
robot1.walk()  # → アシモは歩きました!現在の歩数: 2

💡 ここでも「self」が重要!
self.steps を使うことで、「どのロボットが何歩歩いたのか」をちゃんと記録できます。

もし「self」がなかったら、歩数のデータがどのロボットのものかわからなくなっちゃいます!


まとめ:Pythonの「self」をマスターしよう!

「self」を使う理由:

  • 自分のデータ(変数)を他と区別する
  • クラスのメソッド(関数)で、データにアクセスするため
  • 自分自身の情報を保持し、別のオブジェクトと混ざらないようにする

self」を理解すると、Pythonのクラスが もっと自由に使える ようになりますよ!
Pythonプログラミングを楽しんでください!

29
27
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?