カテゴリ: Python 更新日: 2026/02/22

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

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

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

生徒

「Pythonのクラスって出てきたんですけど、selfとか変数の意味が全然わかりません…」

先生

「パソコンを触ったことがなくても大丈夫ですよ。箱と名前をイメージしながら、順番に見ていきましょう。」

生徒

「インスタンス変数とクラス変数って何が違うんですか?」

先生

「どの箱専用の情報なのか、みんなで共有する情報なのか、その違いなんです。」

-

1. Pythonのオブジェクト指向とクラスとは?

1. Pythonのオブジェクト指向とクラスとは?
1. Pythonのオブジェクト指向とクラスとは?

Python(パイソン)のオブジェクト指向とは、現実世界の「モノ」をプログラムの中で表現する考え方です。 たとえば「人」「車」「犬」などを、プログラム上のクラスとして作ります。

クラスとは「設計図」のようなもので、たい焼きの型をイメージすると分かりやすいです。 型(クラス)から作られる実物のたい焼きがインスタンスです。

2. インスタンス変数とは?自分専用の情報

2. インスタンス変数とは?自分専用の情報
2. インスタンス変数とは?自分専用の情報

インスタンス変数とは、作られたインスタンスごとに持つ変数です。 人で例えると「名前」や「年齢」のように、人それぞれ違う情報です。


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

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

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

たろう
はなこ

このように、同じクラスから作られても、インスタンス変数は別々に保存されます。

3. selfとは何者?超シンプルに説明

3. selfとは何者?超シンプルに説明
3. selfとは何者?超シンプルに説明

self(セルフ)は「自分自身」を指す言葉です。 プログラムの中で「この箱の中の情報ですよ」と教えるために使います。

引っ越しのときに段ボールへ名前を書くようなもので、selfがないと、どの箱の情報か分からなくなります。


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

dog = Dog("ポチ")
print(dog.name)

4. クラス変数とは?みんなで共有する情報

4. クラス変数とは?みんなで共有する情報
4. クラス変数とは?みんなで共有する情報

クラス変数は、クラスから作られた全員が同じ値を使う変数です。 たとえば「日本の首都は東京」のように、全員共通の情報です。


class School:
    school_name = "ひまわり小学校"

student1 = School()
student2 = School()

print(student1.school_name)
print(student2.school_name)

ひまわり小学校
ひまわり小学校
-

5. インスタンス変数とクラス変数の違いを比較

5. インスタンス変数とクラス変数の違いを比較
5. インスタンス変数とクラス変数の違いを比較

ここで違いを整理しましょう。

  • インスタンス変数:一人ひとり違う情報
  • クラス変数:全員で共有する情報

class Cat:
    species = "ネコ"

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

cat1 = Cat("ミケ")
cat2 = Cat("クロ")

print(cat1.name, cat1.species)
print(cat2.name, cat2.species)

6. selfを使わないとどうなるの?

6. selfを使わないとどうなるの?
6. selfを使わないとどうなるの?

selfを書かないと、Pythonは「その変数がどこにあるのか」分かりません。 結果としてエラー(プログラムの失敗)が起きます。


class Sample:
    def __init__(self):
        self.value = 10

sample = Sample()
print(sample.value)

selfは必ず「自分の箱の中ですよ」と教えるために必要な存在です。

7. 初心者がつまずきやすいポイント

7. 初心者がつまずきやすいポイント
7. 初心者がつまずきやすいポイント

Pythonのオブジェクト指向で初心者が混乱しやすいのは、目に見えない点です。 ですが、箱・設計図・共有ルールというイメージを持つだけで、一気に理解しやすくなります。

インスタンス変数・クラス変数・selfはセットで覚えると、Pythonの理解がぐっと深まります。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
カテゴリの一覧へ
新着記事
New1
PHP
PHP のインストール方法(Windows・Mac・Linux)と開発環境
New2
PHP
PHP の文字列操作を完全ガイド!初心者でもわかる連結・置換・フォーマット
New3
Python
Pythonの定数を定義する方法!慣習とモジュールを活用した書き方
New4
Python
Pythonのformat()の使い方完全ガイド!文字列フォーマットの基本と応用
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonでリストを分割する方法(スライス / split() / itertools)
No.2
Java&Spring記事人気No2
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.3
Java&Spring記事人気No3
PHP
PHPのバルクインサート完全ガイド!初心者でもわかる複数データの一括処理と高速なデータベース操作
No.4
Java&Spring記事人気No4
Python
Pythonで特定の年・月の日数を取得する方法を完全解説!初心者でもわかるcalendar.monthrange()
No.5
Java&Spring記事人気No5
PHP
PHPのforeachループを完全ガイド!初心者でもわかる配列・連想配列の処理
No.6
Java&Spring記事人気No6
PHP
PHP の型宣言(strict_types の使い方)を徹底解説!初心者でもわかる型の指定方法
No.7
Java&Spring記事人気No7
PHP
PHPのCookieの管理方法とクライアントサイドのデータ保持の基本とベストプラクティス
No.8
Java&Spring記事人気No8
PHP
PHPでJSONを扱う方法を完全ガイド!初心者向けにjson_encodeとjson_decodeをやさしく解説
-
-