Pythonの初心者がほぼ間違いなくつまずくのが「オブジェクト指向」という考え方でしょう。
上級者にとっては理解して当然の考え方かもしれませんが、我々のような独学プログラマーにとってはとても難易度が高い概念です。
とても大切な概念と解説されている場合が多いので、何とか理解しようと努めるのですが、結局分からないで終わってしまいます。
私もよく分からないまま(上手く説明を言語化できないまま)学習を継続しましたが、なんとかなります。
最初のうちはぼんやり分かっていればいいのではないでしょうか?無理に完璧に分かろうとしなくて大丈夫だと思います。
オブジェクトとは何か?
直訳すればモノですよね。データと操作をひとまとめにしたモノです。言い換えるとデータは「変数」で、操作は「メソッド(関数)」と表現できます。
この「変数」と「メソッド(関数)」をひとまとめにしたモノ(クラス)を作る手法と考えるとちょっと分かる気がしませんか?
正確じゃないかもしれませんが、私はこれで少し分った気がしました。
オブジェクト ≒ 変数やメソッド(関数)をまとめたモノ
モノ(オブジェクト)指向とは?
ではオブジェクト指向とはなんでしょうか?
モノ指向と言われてもよく分かりませんね。オブジェクトについてはなんとなく分かってきても、「指向」がくっつくとまたよく分からなくなります。
プログラムを作るときに、オブジェクト単位で考えるということでいいと思います。これも正確か分かりませんが。
それぞれのオブジェクトが互いに作用し合うように、プログラムを作成する手法ということで分かりますでしょうか?
オブジェクト指向 ≒ オブジェクト同士で利用し合うプログラム
オブジェクト指向は何がいいのか?
オブジェクトをそれぞれ独立したパーツのように扱うことができるので、効率よくプログラムを設計できる上に、メンテナンスもしやすいと言われています。
オブジェクトをパーツと考えれば、プログラムに不具合があったとき原因を見つけやすく、対応もしやすいということですね。
仕様が変わった場合も必要な部分だけを変えればいいというメリットがあります。
また、オブジェクトを使い回せる(量産できる)というのもオブジェクト指向のメリットです。
クラスという概念が理解できればなんとなく分かると思います(オブジェクトはクラスから生成されます)。
オブジェクトはクラスから作られる。再利用することで量産でき、効率よくプログラミングが可能で、メンテナンスもしやすい
オブジェクト指向のまとめ
やっぱりよく分からないですかね?
自分でもしっかり言語化できたとは思えません。ただなんとなくでも分かれば、最初は十分だと思います。
変数やメソッド(関数)をオブジェクトとして考えることで、上記のようないろいろなメリットがあるんだと分かればいいのではないでしょうか?
もう少し分かりやすい説明ができるようになったら、また記事を更新します。