【初心者向け】Pythonクラスでよく出てくるselfってなに?Pygameの例でわかりやすく解説!

記事
IT・テクノロジー
Pythonでクラスを使うと、よく出てくるのがこの謎のキーワード…

self

「これって何?」「なんで毎回書くの?」と思ったことがある人、多いのではないでしょうか。

この記事では、実際に私がPygameで作ったクラスを例に、selfの意味と使い方をわかりやすく解説していきます。

🔰 selfってなんなの?
ズバリ、selfは**「クラスの中で使う自分自身」**という意味です。

たとえばこのコード:


self.cart_image = pygame.image.load("cart.png")

これは、「このクラスが持つcart_imageというデータに、画像ファイルを読み込んで保存してますよ〜」という意味です。

✅ selfがあると何がいいの?
クラスの外に変数を出さずに、オブジェクト(インスタンス)ごとに情報を持てるようになります。

たとえば、私が作ったこんなクラス👇


class MainFace:
    def __init__(self, screen):
        self.screen = screen
        self.cart_image = pygame.image.load("cart.png")
        self.cart_rect = self.cart_image.get_rect(topleft=(1180, 960))

この中のself.cart_imageやself.cart_rectがあるおかげで、後から別の関数でもこう書けるようになります:


def draw_cart(self):
    self.screen.blit(self.cart_image, self.cart_rect)
もし self をつけなかったら、これらの変数は __init__() の中だけでしか使えません。

💡 じゃあ self をつけないとどうなる?
たとえばこんな書き方:


cart_image = pygame.image.load("cart.png") # ← selfがない
これはただの一時的な変数なので、他の関数では呼び出せません。
せっかく読み込んだ画像でも、使えるのは __init__() の中だけになってしまいます。

🎯 結論:selfは「自分用の引き出しを作るラベル」
クラスの中で self.〇〇 と書くことで、

他の関数でも使える

インスタンスごとにデータを持てる

コードがスッキリ整理される

というメリットがあります。

✏ さいごに
私は最初、「selfなんて意味わからん!全部グローバル変数にしちゃえ!」と思っていたのですが、
ゲームを作っていくうちに「selfで管理したほうが圧倒的にラク」だと気づきました。

これからクラスを書く人は、
まずは「self = 自分専用の情報箱」と思っておけばOKです!
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す ココナラコンテンツマーケット ノウハウ記事・テンプレート・デザイン素材はこちら