この記事の対象者
プログラミング初心者へ向けた記事です。
今回は、Pythonの__init__について解説します。
文献をもとに書いていますが、同じ初心者が書いているので悪しからず(´・ω・`)(笑)
記事を理解するためのキーワード
クラス、インスタンス、コンストラクタについて簡単に話します。
分かる人はスクロールして飛ばしてください。
クラス
クラスとは、プログラミングにおいて、設計書みたいな役割を果たします。
例えば、「車」というクラスを設計したとします。
さて、車にはどういう機能があるでしょうか?
- アクセルかけて走る
- ブレーキかけて止まる
- ライトを付ける
- ライトを消す
- クラクションを鳴らす
↑こんな感じだと思います。
このような機能をまとめたもの(Pythonで言うところのメソッドをまとめたものと言えるかな?)がクラスです。
インスタンス
インスタンスとは、 クラスを元に生み出したオブジェクト です。
もしオブジェクトについてわからない方がいたら、別の記事で理解してから先に進んだほうが良いと思われます。
ここで解説するとなが~くなるので詳細は省略しますが、要するにオブジェクトとは「もの」のことです。
今までの表現をそのまま利用するならば、「設計書を元に生み出されたもの」という感じですね。
例えば、さっきの車の設計書で定義したメソッド(走る、クラクションを鳴らす等)を使うとします。
これらのメソッドを使うためには、設計書を実体化させなければいけません。
設計書を実体化させたもの、それがインスタンスと言えるでしょう。
。。。ちょっと分かりづらいかもしれませんが(^_^;)
要するに、クラスで定義されたメソッドを使うためには、クラスからインスタンスというもんを作り出す必要があるってわけです。
コンストラクタ
さて、ちょっとクラスの話に戻ります。
クラスはメソッドをまとめたものという話をしましたが、もう一つ、クラスは属性(値)もまとめることができます。
車というクラスを定義した時に、アクセルで走る、クラクションを鳴らす等の他に例えば
- 車の名前
- 車のナンバー
- 車の値段
- 車の色
- 車の形(スポーツタイプとかワゴンタイプ)
などの情報をもたせることができます。
クラスを元にインスタンスを作成した際、適切に引数を与えることによって、上述のような値を初期値としてもたせることができます。
コンストラクタとは、インスタンス作成時に実行されるメソッドのことで、これが実行されることで、インスタンスの初期値が設定されます。
わかっていただけたでしょうか(^_^;)?
この操作は何で必要なの?
__init__は、 Pyhtonでコンストラクタとおんなじことをやってくれるメソッド です。
スクロールして飛ばしちゃったけど、「あれ?コンストラクタってなんぞや?」と思った人は、ちょっとスクロールを戻して、キーワードの部分を読んでみてくださいm(_ _)m
Pythonにて、コンストラクタ相当のことを行うために__init__がある、と言えるでしょう。
例えば、車というクラスの初期値として、車の名前と車のnumberを設定したいとします。
1 2 3 4 |
class CAR: def __init__(self,car_name,car_number): car_name = Impreza car_number = 0306 |
↑こんな感じで設定しておけば、車(CAR)を呼び出すだけで、 車の名前と、車のnumberが、各車種の設計書を作るたびに初期値として設定されるってわけです。
参考文献
実践力を身につけるPythonの教科書
日本人の方が書いたPythonの本です。平易な表現で的確な説明がなされています。全くプログラミングに触れて来なかった方でも理解できると思います。
初心者におすすめの1冊です。
入門Python3
オライリーのPython入門書です。外国の方の書いた本を日本語訳したものです。
外国の本特有?の気の利いたジョークも織り交ぜて書いてあります。僕は結構好きですが、全く初心者の人にはおすすめできないかも?
2冊目以降におすすめです。
プログラミングをかじったことがある人ならはじめての本でも問題ないと思われます。