🙌
【Python学習記録】クラス内のselfって何者?
selfは「そのインスタンス自身」を指す
クラス内で定義する関数(=メソッド)では、第一引数に必ずselfと書くルールがある。
最初は意味不明だったけど、要するにこれは**「そのメソッドを呼び出したインスタンス自身」を受け取るための引数のこと。
def drive(self):
print("走るで〜")
メソッドを呼び出す
my_car = Car()
my_car.drive() # → 「走るで〜」
実際の動き
Car.drive(my_car)
Pythonはメソッドを呼ぶときに、自動で「呼び出し元のインスタンス」を渡してくるから、それを受け取るselfが必要。
インスタンスのデータ(属性)にも必要
加えて、インスタンスごとに違うデータを持たせたいときもselfが必要。
class Car:
def __init__(self, color):
self.color = color # ←これで「自分専用のcolor」を保持できる
def show_color(self):
print(f"この車の色は {self.color} ")
このself.colorがないと、毎回クラス全体で共通の変数扱いになってしまう。
まとめ(自分向け)
self は「そのインスタンス自身」
メソッド内では self.変数名 でデータにアクセス
書かんと普通にエラーになる(暗黙的にインスタンスが渡されるから)
今は「こういうもんや」と思って書いてるけど、何回か使ってくうちに自然に慣れてきそう。
Discussion
self.color がないと、毎回ローカル変数扱いになるのではないでしょうか?