以前Twitterでクラスのわからん点を書きなぐったは良いものの忘れるたびにTwitterを履歴を漁ってたがよくよく考えると面倒なのでここにまとめときます。
クラスって何?
クラスとかインスタンス化とかをポケモンで例えてみると、
ポケモンでポッポっていますよね?あの最初の草むらでめっちゃ出てくる奴。あれを実際にプログラムするとして、出てくるポッポ全部別々で作ってたら、死にますよね?数量限定の手作りパンと違って草むらにいれば無限に出てくるので
なので、頭がいい人は気づいたわけです。先にポッポのある程度のデータを決めた「型」を創っちゃえと。これがクラスです。例えば種族値が
40 45 40 35 35 56 であるとか、見た目はどうとか。
プログラムでも複数回使うものに関しては先に型を創っちゃえって考えで生まれたのがこの「クラス」です
そしてインスタンスとはその型を用いて生まれてたポッポの事です。
ポッポの種族値や見た目は全て同じですが、例えば個体値はそれぞれ違いますよね?同じLv.20のポッポでも優劣はあるわけです。
そんな一体一体違うポッポそれぞれをインスタンス
と呼び、クラスを用いて作る事をインスタンス化と言います
def __init__って何?
__init__自体はインスタンスが作成される際に出てくる特殊なメソッド。
まずメソッドとはクラス中のデータを処理するためのクラス内の関数。
そして__init__はそんなメソッドの中でも「コンストラクタ」と呼ばれている。
こいつの役割はインスタンスを構築する事である。
では実際の所何をしているのか。簡単に言えば、クラスの初期設定を定義している。
「初期化」と聞くとリセットを思い浮かべる方も多いかと思いますが、正確にはデフォルト値を設定するイメージです。
この__init__を使うことでクラスをベースにインスタンス化する度、デフォルトの設定定めることが可能。
selfって何?
selfとはpythonでクラスを使用する際、メソッドやコンストラクタの第一引数となるもの。
意味としては、インスタンス自身を示すもの(なのでself)。
もう少し詳しく説明すると、クラスをもとに作ったもの(インスタンス)自身を指している。
要はこのselfっていうのは個人を特定していて、クラス内で
self.変数と来た場合には個人の変数を定義している。