【Python】クラスで用いるコンストラクタって何?「__init__」の使い方を解説!

プログラミング

今回は、Pythonでクラスで用いる「コンストラクタ」について解説していきます。

コンストラクタを一言でいえば、オブジェクトを生成したクラスで、最初に1度だけ呼ばれる関数のことを言います。具体的なコードを見て理解を深めていきましょう。

無料の説明会を有効活用しよう!

独学の学習は孤独感を感じやすく挫折してしまう初心者も多いです。それでもなんとかPythonを効率よく学びたいという方は適性を知るためにもまずは無料説明会を利用しましょう。

コンストラクタとは

コンストラクタとは、オブジェクトを生成したクラスに対して、最初に一度だけ実行されるメソッド(関数)のことです。

これをプログラムで書くには「__init__」と記述します。Pythonでは、アンダースコア「_」がついている関数は特殊メソッドといいます。

つまり、コンストラクタは最初に一度だけ実行される特殊メソッドだということが分かります。

ちなみに、「__name__ == “__main__”」もかなり特殊ですよね!

Pythonにおけるコンストラクタの使い方

programming

引数なしのコンストラクタ

まずは、基本的なコンストラクタの記述方法を見ていきましょう。

このように、インスタンスを生成した時に自動的にコンストラクタが実行されているのが確認できます。

引数ありのコンストラクタ

次は引数がある場合のコンストラクタの使い方です。

今回の「Human」クラスのコンストラクタには、「name」と「gender」という2つのメンバ変数があります。

そのため、インスタンスを生成する際の引数も2つ設定しましょう。

コンストラクタ内の関数呼び出し

クラス内のメソッドをコンストラクタで呼び出すには「self」を付けることで可能になります。

サブクラスのコンストラクタ

次は継承という考え方が必要です。

継承について詳しく知りたい方は、「【Python入門】初めてのプログラミング(継承2)雇用管理プログラムの作成」で解説しておりますので参考にしていただけると幸いです。

サブクラスのコンストラクタで継承元のコンストラクタを利用しています。この際には、継承元のメソッドを利用するという意味を持つ「super」を記述しましょう。

コンストラクタのオーバーロード

オーバーロードとは、クラス内で引数の数は異なるが、同じ名前の関数を記述することを言います。この時に、引数が全く同じものを定義することはできません。

Pythonは変数の型を決める必要がない一方で、型の判別ができないためオーバーロードという機能はありませんが、プログラムの書き方でそれと同じような機能を作成することが可能です。

ここからはコンストラクタをオーバーロードする方法を解説していきます。

オーバーロードの失敗例

コンストラクタをオーバーロードするために、単純に2つ目の「__init__」を定義してもエラーとなってしまいます。

これを解決するには、キーワード引数(デフォルト引数)を設定することで、幅を利かせたインスタンスを生成が可能となります。

キーワード引数を用いた方法

まとめ

最後まで読んでいただきありがとうございます!

今回は、Pythonのコンストラクタについて詳しく解説いたしました。

キーワード引数(デフォルト引数)を設定することにより、コンストラクタのオーバーロードが可能となることでより柔軟にインスタンスを生成することができるようになりました。

この方法は、メソッドを定義する際にもかなり便利な方法ですのでぜひともマスターしておきたい内容です。

過去にキーワード引数についても解説していますのでよろしければ参考にしてみてください。

参考:【Python入門】初めてのプログラミング(関数の利用・可変長引数とキーワード引数)

無料の説明会を有効活用しよう!

独学での学習は孤独感を感じやすく挫折してしまう初心者も多いです。また、参考書を購入しても全く読む気にならないという方も多いはずです。

それでも、なんとかPythonの勉強を行い、高スキルなエンジニアを目指したいという方は無料で受けられるオンライン説明会に参加してみることも一つの手です。

Pythonというプログラミング言語は機械学習の人気の高まりなどもあり、様々なスクールが無料説明会を開催しています。

その中でも「Freeks(フリークス)|業界初!10,780円のサブスク型プログラミングスクール」がオススメです。Pythonを効率よく学びたいという方はまずは適性を知るためにも無料説明会を利用しましょう。

無料説明会を参加してみる!

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA