.net column

.NET開発者のためのブログメディア

Pythonにおけるコンストラクタ__init__の使い方|特徴も解説

 
Pythonにおけるコンストラクタ__init__の使い方|特徴も解説
基本情報技術者試験の試験対策はこちら>>

SE
コンストラクタという関数について、教えてください。

PM
コンストラクタ関数とは、オブジェクトが扱う変数などの初期化を行います。実際のコードを見ながら理解を深めていきましょう。

Pythonにおける__init__の特徴


Pythonのコンストラクタである__init__の特徴は、クラス名を書くことで、コンストラクタを呼び出せることです。つまり、自動呼び出しされるということです。また、オブジェクトの生成と同時にデータを初期化することができます。

クラス名を書くだけでコンストラクタを呼び出せる

コンストラクタとは、インスタンスを生成する際に実行される関数です。インスタンスはクラス名を書くことで生成することができます。
実際のソースコードを見てみましょう。

実行結果は以下のようになります。

このようにクラス名を書くだけでコンストラクタを呼び出すことができます。

オブジェクト生成と同時にデータ初期化を行える

コンストラクタを呼び出す際に引数を指定すれば、オブジェクト生成と同時にデータの初期化を行うことができます。
実際のソースコードを見てみましょう。

実行結果は以下のようになります。

Pythonでのコンストラクタ(__init__)の5つの使い方とは?


Pythonでのコンストラクタの5つの使い方について説明します。Pythonのコンストラクタを定義する場合は、「__init__」という名前で定義しなければなりません。引数は自由に指定可能ですが、コンストラクタのオーバーロードはできません。

Pythonでのコンストラクタの使い方に興味のある方はぜひご覧ください。

1:引数なしコンストラクタ

Pythonの引数なしコンストラクタの使い方を紹介します。selfはインスタンス自身を示します。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

2:引数ありコンストラクタ

Pythonの引数ありコンストラクタの使い方を紹介します。
実際のソースコードを見てみましょう。

実行結果は以下のようになります。

引数省略時のデフォルト値をコンストラクタに指定することもできます。実際のソースコードを見てみましょう。

実行結果は以下のようになります。

引数を増やして初期値設定する方法

引数は以下のように増やすことができます。

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

Pythonのサブクラスのコンストラクタの使い方を紹介します。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

「super().__init__」とすることで、サブクラスからスーパークラスのコンストラクタを使用できます。

4:オーバーロード

Pythonでは、以下のようにコンストラクタのオーバーロードはできません。

コンストラクタのオーバーロードを実現したい場合の解決策を紹介します。コンストラクタの引数有無で挙動を変えればよいです。

実行結果は以下のようになります。

5:コンストラクタから関数呼び出し

Pythonでコンストラクタから関数を呼び出したい場合はどのようにすればよいでしょうか。以下のように記述すると、実行時エラーになります。

実行結果は以下のようになります。

コンストラクタから関数を呼び出す場合は、selfキーワードを使用します。実際のソースコードを見てみましょう。

実行結果は以下のようになります。

__init__を記述するときの注意点

__init__を記述するときは、第一引数に必ずselfを記入しましょう。これはコンストラクタに限らず、Pythonのインスタンスメソッド全てに言えることです。selfを記入しない場合、エラーが発生してしまいます。

SE
実際のオードを見てみると、特殊メソッドにあたるのでしょうか?

PM
そうです。オブジェクト生成をしつつデータの初期化を行うという点では特殊だと言えますね。

__init__の使い方を覚えよう

いかがでしたでしょうか。Pythonでのコンストラクタの使い方について説明しました。引数の指定方法やサブクラスのコンストラクタの使い方について紹介しました。また、コンストラクタのオーバーロードやコンストラクタからの関数呼び出しについても紹介しました。

ぜひご自身でPythonのソースコードを書いて、理解を深めてください。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags