🙌

【Python学習記録】クラス内のselfって何者?

に公開1

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

shiracamusshiracamus

このself.colorがないと、毎回クラス全体で共通の変数扱いになってしまう。

self.color がないと、毎回ローカル変数扱いになるのではないでしょうか?