カテゴリ: Python 更新日: 2026/03/12

Pythonのコンストラクタ(__init__)の使い方を解説!初心者でもわかるオブジェクトの初期化

Pythonのコンストラクタ(__init__)の使い方!オブジェクトの初期化
Pythonのコンストラクタ(__init__)の使い方!オブジェクトの初期化

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

生徒

「Pythonの“コンストラクタ”ってなんですか?クラスでよく見かける__init__って何をしてるんですか?」

先生

「Pythonの__init__は“コンストラクタ”と呼ばれていて、オブジェクトを作るときに最初に実行される特別な関数なんだ。」

生徒

「つまり、オブジェクトを作るときに必要な準備をしてくれるんですね?」

先生

「その通り。じゃあ、Pythonのコンストラクタの基本的な使い方を一緒に学んでみようか!」

1. コンストラクタとは何か?

1. コンストラクタとは何か?
1. コンストラクタとは何か?

Python(パイソン)のコンストラクタは、クラスからオブジェクト(実体)を作ったときに、「一番最初に自動で呼び出される」特別な関数のことです。プログラミングでは、この最初の工程を「初期化」と呼びます。

例えば、新しいゲームを始めるときに、キャラクターの名前を決めたり、初期装備を持たせたりする「準備」が必要ですよね。Pythonの世界でその準備を担当するのが、このコンストラクタです。

具体的には __init__(アンダースコア2つ + init + アンダースコア2つ)という名前の関数を使います。これは「initialize(初期化する)」の略で、Pythonが「これはオブジェクトを作る時の準備用ですよ」と特別に認識するルールになっています。

未経験者向けのイメージ例:
「たい焼き機」をクラスだとすると、コンストラクタは「焼き始める前に、あんこを入れるかカスタードを入れるか決める作業」のようなものです。この作業があるおかげで、焼き上がった瞬間に「あんこのたい焼き」という実体が完成します。

# クラス(設計図)の定義
class Taiyaki:
    def __init__(self):
        # ここがコンストラクタ!
        # オブジェクトが作られた瞬間に動く処理を書く
        print("ホカホカのたい焼きが焼けました!")

# インスタンス(実体)を作る
my_taiyaki = Taiyaki()

このコードを実行すると、関数をわざわざ呼び出さなくても、Taiyaki() と書くだけで自動的にメッセージが表示されます。これが「自動で実行される」というコンストラクタ最大の特徴です。

2. コンストラクタの基本的な書き方(__init__メソッド)

2. コンストラクタの基本的な書き方(__init__メソッド)
2. コンストラクタの基本的な書き方(__init__メソッド)

Pythonでコンストラクタを作るには、__init__(アンダーバー2つ+init+アンダーバー2つ)という名前のメソッドを定義します。これは、クラスからオブジェクトが生成された瞬間に「自動的に実行される初期設定用の関数」です。

プログラミングが初めての方でも分かりやすいよう、「名前」と「年齢」を持つプロフィールの雛形(クラス)を例に見てみましょう。


class Person:
    # インスタンス化された時に自動で動く初期化処理
    def __init__(self, name, age):
        self.name = name  # 渡された名前を保存
        self.age = age    # 渡された年齢を保存

# クラスを使って実体(インスタンス)を作る
tanaka = Person("田中", 25)

print(f"{tanaka.name}さんは{tanaka.age}歳です。")

このコードでは、Person("田中", 25)と書いた瞬間に、裏側で__init__が呼び出されています。引数のnameには「田中」、ageには「25」が渡され、それがオブジェクトの中に大切に保管される仕組みです。

selfとは?初心者が迷いやすいポイント

一番最初の引数にあるselfは、作成された「そのオブジェクト自身」を指す特別なキーワードです。例えば、田中さんのオブジェクトなら「田中さんのデータ」を、佐藤さんのオブジェクトなら「佐藤さんのデータ」を区別して扱うために、self.name(自分の名前)のように記述してアクセスします。

最初は「おまじない」のように感じるかもしれませんが、「自分の持ち物を管理するための名札」だとイメージすると分かりやすくなります。

3. コンストラクタを使ってインスタンスを作成してみよう

3. コンストラクタを使ってインスタンスを作成してみよう
3. コンストラクタを使ってインスタンスを作成してみよう

上で定義したPersonクラスから実際にオブジェクト(インスタンス)を作ってみましょう。


p1 = Person("たろう", 18)
p2 = Person("はなこ", 25)

print(p1.name)
print(p2.age)

たろう
25

このように、__init__のおかげで、インスタンスを作ると同時に中身のデータを設定することができます。

4. なぜコンストラクタが便利なのか?

4. なぜコンストラクタが便利なのか?
4. なぜコンストラクタが便利なのか?

もしコンストラクタがなかったら、インスタンスを作った後に、毎回nameageを個別に設定しなければなりません。それだと手間もかかり、ミスもしやすくなります。

コンストラクタを使えば、インスタンスを作るときにすべての初期設定が終わるので、とても効率的です。

5. 引数なしのコンストラクタも使える

5. 引数なしのコンストラクタも使える
5. 引数なしのコンストラクタも使える

コンストラクタは、引数(ひきすう)を使わない形でも定義できます。つまり、最初から決めておきたい内容を中に書くこともできます。


class Hello:
    def __init__(self):
        print("こんにちは!Pythonへようこそ!")

greet = Hello()

こんにちは!Pythonへようこそ!

このように、インスタンスを作るだけで自動的にメッセージが表示されるような使い方もできます。

6. コンストラクタの中で他の処理を入れてみよう

6. コンストラクタの中で他の処理を入れてみよう
6. コンストラクタの中で他の処理を入れてみよう

コンストラクタの中には、データの保存だけでなく、条件分岐や関数の呼び出しなども書くことができます。たとえば次のような使い方です。


class Member:
    def __init__(self, name, age):
        self.name = name
        self.age = age
        if age < 20:
            print(f"{name}さんは未成年です。")
        else:
            print(f"{name}さんは成人です。")

m1 = Member("ゆうた", 17)
m2 = Member("さき", 22)

ゆうたさんは未成年です。
さきさんは成人です。

このように、初期化のときに何か特別な処理を実行させたい場合にも、__init__はとても便利です。

7. コンストラクタとクラスの関係を身近な例でイメージしよう

7. コンストラクタとクラスの関係を身近な例でイメージしよう
7. コンストラクタとクラスの関係を身近な例でイメージしよう

クラスが「設計図」だとしたら、コンストラクタは「その設計図をもとにして商品を組み立てる作業」です。たとえばクラスが「自転車の設計図」で、コンストラクタは「タイヤをつけて、ハンドルを固定して…」という組み立て工程です。

このように考えると、__init__は「最初にやるべき準備の場所」だということがよくわかります。

8. オブジェクト指向と初期化の考え方を理解しよう

8. オブジェクト指向と初期化の考え方を理解しよう
8. オブジェクト指向と初期化の考え方を理解しよう

Pythonのオブジェクト指向プログラミングでは、「データ」と「動き」をひとつにまとめるのが基本です。クラスの中にデータ(変数)と動き(関数)を持たせて、作ったオブジェクトが自分で動けるようにするのです。

そのため、オブジェクトが作られるときに「どんなデータを持つか」を明確にすることがとても大切で、その役目を果たすのが__init__です。

初心者にとっては少しとっつきにくいかもしれませんが、「最初にデータを入れておく場所」と考えれば、だんだんイメージがわいてくるでしょう。

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

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

関連記事:
カテゴリの一覧へ
新着記事
New1
Python
Pythonの定数を定義する方法!慣習とモジュールを活用した書き方
New2
Python
Pythonのカプセル化とは?private変数とプロパティの活用方法をやさしく解説
New3
Python
Pythonの継承とは?親クラス・子クラスの関係とメソッドオーバーライドをやさしく解説
New4
Python
Pythonのインスタンス変数とクラス変数の違い!selfの使い方を初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonのfinally文を徹底解説!例外発生時でも実行される処理の書き方と使い方
No.2
Java&Spring記事人気No2
PHP
PHP の MySQL にデータを挿入する方法(INSERT 文の実行)を完全解説!初心者向けガイド
No.3
Java&Spring記事人気No3
Python
Pythonで辞書のネスト構造(入れ子辞書)を扱う方法 初心者向け完全ガイド
No.4
Java&Spring記事人気No4
PHP
PHPの配列をソートする方法!sort, rsort, asort, ksortの使い方を丁寧に解説します!
No.5
Java&Spring記事人気No5
PHP
PHPの可変長引数(...$args)の使い方を完全ガイド!初心者でもわかる基本と活用方法
No.6
Java&Spring記事人気No6
Python
Pythonでエラーメッセージを取得する方法を完全解説!初心者でもわかるExceptionオブジェクト
No.7
Java&Spring記事人気No7
PHP
PHP の MySQL 接続の基本(mysqli, PDO)を完全解説!初心者向けガイド
No.8
Java&Spring記事人気No8
Python
Pythonで経過時間を測る方法をやさしく解説!初心者向けtime.perf_counterとtime.sleepの使い方