プログラムの基本処理は、
繰り返し(for文)
分岐(if文)
の、たった3つだ(*1)
これを制御構造といい、
プログラムはこの3つの制御構造の組み合わせでできている。
そして、
これら一連の処理をまとめたものを
「関数」といい、
その関数に
引数(*2)と呼ばれる入力データを渡し、
返り値という出力データを受け取る(*3)

かわいい無料イラスト使用。
それを繰り返して、
プログラミングしていくのだ(*4)

目次。このあと、関数の章が続く
しかし、
プログラミングでいちいち関数を書いていては、
膨大な数になってしまう。
そこで、出てくるのが、
「オブジェクト指向プログラミング」。
オブジェクトとは、
プログラミングの対象をふわっとまとめた抽象概念なのだが、
定義を説明されてもよくわからない。
ただ、
具体例なら、少しは腹落ちする。

パワポで作るの大変だった(暇?)
たとえば、
ボタンというオブジェクトをプログラミングする場合、
まず、クラスという設計図を書き、
その設計図をもとに、
具体的な実体(=インスタンス)である
ボタン(例では黄色のOKボタン)を作るのだ(*5)

システム開発に携わる人が読む本。難しい(でも大切)。
それで、
設計図であるクラスとは、
その変数を関数等で操作する(=メソッド)の枠組みで、
こんなコードをかく(注 ボタンの例ではない)。

Modelというクラスを設定。機械学習の予行演習だ。
で、ここで引っかかるのが、
第一引数の「self」だ。

お前は、何者?
ググってみると、
このselfは、インスタンス自身を示すものです。
って、だから、なんなん?
といってこれ以上調べてもよくわからないので、
とりあえず、
self を書いたほうが、いろんなことができるから
という説明で納得しとこう(このサイトを参照した。→こちらをクリック)
次に、
この設計図で実物を作る(=インスタンス化)のがこのコード。

outが消えているが、出力が3。
これはこういうもんだと覚えよう。
このクラスとインスタンス化、
実装でよく出てくるわりには、ふわっとした概念でつかみづらい。
これから実例を通して、少しずつ理解していこう。