カテゴリ: 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
Python
Pythonの文字列から一部を抽出する方法!スライスを使った基本的な切り出し方
New2
Flask
Flaskアプリのセキュリティ対策まとめ!初心者向けに基本をやさしく解説
New3
Flask
FlaskでCookieを安全に使う方法!HttpOnly・Secureフラグの使い方を徹底解説
New4
Flask
Flaskで外部APIと連携する方法!requestsライブラリの使い方を初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.2
Java&Spring記事人気No2
Python
Pythonでトランザクション処理を実装する方法を完全解説!commit・rollbackで安全なSQL操作
No.3
Java&Spring記事人気No3
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.4
Java&Spring記事人気No4
Flask
Flaskとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.5
Java&Spring記事人気No5
Flask
Flask‑RESTfulでREST APIを構築する手順まとめ!初心者向けにやさしく解説
No.6
Java&Spring記事人気No6
Flask
Flaskで開発中にデータベースを初期化する方法!初心者でもわかる便利なTips
No.7
Java&Spring記事人気No7
Python
Pythonの文字列から一部を抽出する方法!スライスを使った基本的な切り出し方
No.8
Java&Spring記事人気No8
Flask
FlaskのSQLAlchemyでフィルタリング検索!filter, filter_byの使い方完全ガイド