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プログラミングを楽しんでください!