カテゴリ: Python 更新日: 2026/01/18

Pythonのインスタンス変数とクラス変数の違い!selfの使い方を初心者向けに徹底解説

Pythonのインスタンス変数とクラス変数の違い!selfの使い方をマスター
Pythonのインスタンス変数とクラス変数の違い!selfの使い方をマスター

先生と生徒の会話形式で理解しよう

生徒

「Pythonのクラスを使っていたら、selfを付ける変数と付けない変数があって混乱しました。何が違うんですか?」

先生

「それはインスタンス変数とクラス変数の違いですね。役割がまったく違う変数なんです。」

生徒

「名前も難しそうですし、プログラミング未経験でも理解できますか?」

先生

「大丈夫です。身近な例えを使って、selfの意味から順番に説明していきましょう。」

1. 変数には種類がある

1. 変数には種類がある
1. 変数には種類がある

Pythonでは「変数」という言葉がよく出てきます。 変数とは、文字や数字などのデータを一時的に入れておく箱のようなものです。

オブジェクト指向プログラミングでは、この変数にも種類があります。 クラスの中で使われる変数は、大きく分けて インスタンス変数クラス変数の二つです。

この違いを理解することが、PythonのOOPを理解する大きな一歩になります。

2. selfとは何かを先に理解しよう

2. selfとは何かを先に理解しよう
2. selfとは何かを先に理解しよう

インスタンス変数を理解する前に、 まずselfについて知る必要があります。 selfは「そのオブジェクト自身」を表す特別な言葉です。

例えば、クラスから二人の人を作ったとします。 そのとき、それぞれが「自分の名前」を持っています。 この「自分」を指す言葉がselfです。

Pythonでは、クラスの中で 「このオブジェクト専用の情報」を扱うときに必ずselfを使います。

3. インスタンス変数とは何か

3. インスタンス変数とは何か
3. インスタンス変数とは何か

インスタンス変数とは、 オブジェクトごとに別々の値を持つ変数のことです。 クラスから作られた一つ一つの実物に紐づいています。

人で例えると、名前や年齢のようなものです。 同じ「人」という設計図から作られていても、 名前や年齢は一人一人違います。

Pythonでは、インスタンス変数は self.変数名という形で定義します。

4. インスタンス変数の基本例

4. インスタンス変数の基本例
4. インスタンス変数の基本例

class Person:
    def __init__(self, name):
        self.name = name

この例では、nameがインスタンス変数です。 self.nameと書くことで、 「この人専用の名前」を保存しています。


person1 = Person("たろう")
person2 = Person("はなこ")

print(person1.name)
print(person2.name)

たろう
はなこ

同じクラスから作られていますが、 それぞれ違う値を持っていることが分かります。

5. クラス変数とは何か

5. クラス変数とは何か
5. クラス変数とは何か

次にクラス変数です。 クラス変数は、クラス全体で共有される変数です。

どのオブジェクトから見ても同じ値になります。 一つのクラスに一つだけ存在するイメージです。

例えるなら、学校の校歌のようなものです。 生徒は違っても、校歌は全員共通です。

6. クラス変数の基本例

6. クラス変数の基本例
6. クラス変数の基本例

class Person:
    species = "人間"

    def __init__(self, name):
        self.name = name

speciesがクラス変数です。 selfを付けず、クラスの中に直接書かれています。


person1 = Person("たろう")
person2 = Person("はなこ")

print(person1.species)
print(person2.species)

人間
人間

どのオブジェクトから見ても、 同じ値が使われていることが分かります。

7. インスタンス変数とクラス変数の決定的な違い

7. インスタンス変数とクラス変数の決定的な違い
7. インスタンス変数とクラス変数の決定的な違い

インスタンス変数は「一人一人専用」、 クラス変数は「全員共通」という違いがあります。

selfが付くかどうかは、 「そのデータが誰のものか」を表しています。

selfが付いていればオブジェクト専用、 selfが付いていなければクラス全体のもの、 という考え方を覚えておくと混乱しません。

8. selfを正しく使う理由

8. selfを正しく使う理由
8. selfを正しく使う理由

Pythonでselfを使う理由は、 複数のオブジェクトを同時に扱うためです。

selfがないと、 どのオブジェクトの情報なのか分からなくなります。 selfは、Pythonが迷わないための目印です。

初心者のうちは難しく感じますが、 「自分自身を指す言葉」と考えると理解しやすくなります。

カテゴリの一覧へ
新着記事
New1
Flask
Flaskでマイグレーション管理を始めよう!Flask-Migrateの使い方と手順
New2
Python
Pythonのインスタンス変数とクラス変数の違い!selfの使い方を初心者向けに徹底解説
New3
Flask
Flaskのデバッグモードを安全に使うポイント!初心者が注意すべき落とし穴とは?
New4
Django
Djangoビューとは?仕組みと役割を完全解説!初心者でもわかるDjangoビュー基本
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonで現在の日付・時刻を取得する方法(datetime.now() / today())
No.2
Java&Spring記事人気No2
Django
Django settings.py の役割とよく使う設定を完全解説!初心者でもわかる基本と考え方
No.3
Java&Spring記事人気No3
Python
Pythonのリストを分割する方法を完全ガイド!初心者でもわかるスライス・split・itertoolsの使い方
No.4
Java&Spring記事人気No4
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
No.5
Java&Spring記事人気No5
Python
Pythonとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.6
Java&Spring記事人気No6
Django
DjangoのURLルーティングとは?初心者向けに仕組みと役割をやさしく解説
No.7
Java&Spring記事人気No7
Python
Pythonのコーディング規約(PEP8)とは?初心者でもわかる書き方の基本ルール
No.8
Java&Spring記事人気No8
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例