カテゴリ: 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のAPI開発でテストを始めよう!初心者でもわかるpytestを使った基本テスト例
New2
Flask
Flaskのエラーページをカスタマイズする方法!404・500ページの作り方まとめ
New3
Python
Pythonで取得結果を辞書形式で扱う方法を完全解説!fetchone・fetchallを初心者向けに理解しよう
New4
Flask
Flaskでよくあるデータベースエラーと解決方法まとめ!初心者でも安心の完全ガイド
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.2
Java&Spring記事人気No2
Python
Pythonのbytes型とbytearray型とは?初心者向けにバイナリデータの扱い方を解説!
No.3
Java&Spring記事人気No3
Python
Pythonのコメント活用術!初心者向けにTODO・FIXME・ドキュメンテーションコメントの書き方を完全解説
No.4
Java&Spring記事人気No4
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.5
Java&Spring記事人気No5
Flask
Flaskアプリの環境変数をクラウドで安全に設定する方法!初心者のための完全ガイド
No.6
Java&Spring記事人気No6
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
No.7
Java&Spring記事人気No7
Python
Pythonで空白や不要な文字を削除する方法!strip(), rstrip(), lstrip() の使い方を初心者向けに解説
No.8
Java&Spring記事人気No8
Flask
FlaskのSQLAlchemyでフィルタリング検索!filter, filter_byの使い方完全ガイド