自分がPythonを学習し始めて数か月が経ちました。最初はAIとか機械学習とか面白そうと思って学習し始めたのですが、クローリングとスクレイピングに興味がわき前回作ったようなヤフオク落札履歴検索ツール【Python】ツールを作ろうとしたらエラーが出たのでAnaconda+Pycharmで環境を再構築した話やら記事にはしてないけどTwitterで特定ユーザーのフォロワーをフォローするツールを作ったりしてました。
ある程度クローリング&スクレピングの技術はそこそこ使えるようになったので、今まで学習したことを忘れた時の為や、誰かが学習する時に役に立つ様に基本からアウトプットすることにしました。内容は学習するときに買った本を基に作成します。
※配布するときは著作権には注意しないと大変なことになるので気を付けて下さい。
個人的にはデスクトップアプリかバッチ処理でクローラーや人工知能や機械学習といった事に使われるのが多いかと思います。
その類の本は沢山あるので目にする機会はあると思います。
そんなPythonは「スクリプト言語」(本によっては「インタプリター言語」とも)という種類に分けられます。これはプログラムを作成するとそのまま実行することが出来るという特徴があります。逆にそのまま実行できない(アプリケーション(実行ファイル本体であるexeファイルの事)を作成する必要がある)言語もあります(コンパイラ型言語と言います)。※Pythonはアプリケーションを作成して実行することも可能です。
オブジェクトとは「もの」の事を指します。「もの」とは現実ではスマホであったりPCであったり、食べ物、飲み物など様々なものの事を指しますが、オブジェクト指向では「もの」とは「プログラムの対象」というすごく抽象的なことを指します。
wikiではこのオブジェクトの事を以下のように記述してあります。
関連するデータを束ね、代入、演算、手続き(関数やメソッドなど)を介した受け渡しといった操作の対象にでき、またメッセージの受け手になれる実体をオブジェクトと呼ぶ。
なかなかイメージするのが難しいかと思います。プログラム上で使う大抵のものはオブジェクトだと思ってもあながち間違いではないと言えます。
それぞれのオブジェクトはデータと処理という属性(アトリビュート)を持っています。データの事を「プロパティ」処理の事を「メソッド」と呼びます。
例えば、RPGゲームの主人公で考えると「HP」「MP」「STR」などのステータスはプロパティ、「移動する」「話す」等の行動はメソッドと言えるかもしれません。
さて、それではそのオブジェクトはプログラム上ではどういった感じでしょう。
■クラスとインスタンス
クラスは「雛型」、インスタンスは「クラスの実態」と考えることが出来ます。先述のRPGゲームの主人公に置き換えると、クラスは「プレイヤーがプレイする前の状態」、インスタンスは「プレイを始めて操作する主人公」といった感じでしょうか。
プログラム上ではクラスをインスタンス化してそれを扱います。
クラスの中には例えば「HP」「MP」「STR」などのステータスもプロパティとして存在し、「移動」「話す」といったメソッドも存在します。
プログラムで扱うオブジェクトは全てがクラスをインスタンス化したオブジェクトを扱います。クラスそのものを扱うことはありません。
■継承
オブジェクト指向言語のメリットとして「継承」という機能があります。これは既に作成済みのクラスを再利用してあらたなクラスを作成することです。再利用することで同じ様な機能を持つ別のクラスを楽に作ることが出来ます。例えばRPGゲームだと街中の村人や店員など同じ状な動きをするキャラクターは多く存在します。それらは共通の動作を別に作成し、継承という形で再利用することで開発やメンテナンス等を楽に出来るようになります。
継承元のクラスを「スーパークラス」、継承先のクラスを「サブクラス」と呼びます。
ざっくりとした説明ですがPythonはこんな言語です。
これを読んでPythonってこんな事ができるんだとか、こんな言語なんだというのがなんとなくでもいいので感じて貰えると嬉しいかなと。