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

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. コンストラクタの基本的な書き方

2. コンストラクタの基本的な書き方
2. コンストラクタの基本的な書き方

まずは簡単なクラスを使って、Pythonのコンストラクタ__init__の基本的な使い方を見てみましょう。


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

この例では、Personという人を表すクラスを作っています。そして、__init__の中で、nameageという情報をオブジェクトにセットしています。

selfというのは「そのオブジェクト自身」を意味する特別なキーワードです。クラスの中で自分自身にアクセスするために使います。

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のNoneとは?NoneTypeの使い方とnullとの違いをわかりやすく解説
New3
Python
Pythonで文字列の長さを取得する方法!len()の基本と応用
New4
PHP
PHP のインストール方法(Windows・Mac・Linux)と開発環境
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonでファイルの更新日やサイズを取得する方法!初心者でもわかるos.stat()の使い方
No.2
Java&Spring記事人気No2
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.3
Java&Spring記事人気No3
Python
Pythonの書き方を基本から解説!はじめてのPythonプログラム
No.4
Java&Spring記事人気No4
PHP
PHPでREST APIを作る方法を完全ガイド!初心者でもわかるAPI開発入門
No.5
Java&Spring記事人気No5
PHP
初心者向けにPHP でファイルを開く・読み込む・書き込む方法(fopen, fwrite, fread)を解説する記事
No.6
Java&Spring記事人気No6
PHP
PHP のインストール方法(Windows・Mac・Linux)と開発環境
No.7
Java&Spring記事人気No7
Python
Pythonのコンストラクタ(__init__)の使い方を解説!初心者でもわかるオブジェクトの初期化
No.8
Java&Spring記事人気No8
PHP
PHP の可変変数と変数の参照渡しを完全解説!初心者でも理解できる動的変数の使い方
-
-