Python初心者にもわかるオブジェクト指向

オブジェクト指向とは

この語句については、Google検索でもPythonの解説書を読んでもなかなか、わかりやすい説明がありません。特に、日本人が書いた記事はその傾向が強く、途中で何を言っているのかわからないものが散見されます。 とはいえ、プログラミングの技術を身に着けてそれを仕事としてやっていこうと思われる方は、オブジェクト指向でプログラムを書く、ということは必須なので、まずわかりやすい概念を身に理解されみてはいかがかと思います。 そのためには、「クラス」「メソッド⇔関数」「属性⇔変数」の考えは必須なので、これについては以下の記事を読んで理解をしてください。 クラス、メソッド、属性というものを理解されて、コードが書けるようになりましたら この本に書かれているオブジェクト指向、とは?という説明文を読んでください。

  「オブジェクト指向とは変数を属性として、関数をメソッドとしてまとめてクラスを作るプログラミングの手法です」  

そうです。手法です。 これは、 「変数はクラスの中に含まれる場合は属性と呼ばれます」 「関数はクラスの中に含まれる場合はメソッドと呼ばれます」 という考えに基づいてクラスを作るということです。 実は、クラスの解説記事の中でご紹介した携帯電話をあつかったコードは すでに「オブジェクト指向のプログラミング」なのです。 もう一度繰り返しますね。  

「オブジェクト指向とは変数を属性として、関数をメソッドとしてまとめてクラスを作るプログラミングの手法です」  

いかがでしょう。 もう少し突っ込むと、

・オブジェクト指向でコードを書くことにより、コードの再利用を促進し、システムの開発や保守にかかるトータル時間を短縮できるというメリットがあります。

・また、クラスに指定の変数を持たせて、インスタンスを作る時に、それに値を渡します。グローバル変数は一切使わずに、クラスで変数を定義するので、グローバル変数の問題でなやむということがありません。

この2つは、もう少しレベルが上ってから読んでいただければ「そういうことか」と思っていただけると思います。 この考えがしっくり来るようになれば、オーバーライド、継承、ポリモーフィズムといった方法を学び、更にオブジェクト指向エクササイズをおこたうこと一気に「オブジェクト指向」という技法のスキルが上がっていくと思います。  

プログラムサンプル

ひとつ例を作ってみましょう。ネコというクラスをつくり、その中でメソッド(関数)、属性(変数)を定義します。 まず、Catというクラスを作成し、name,weightという属性をコンストラクタを作成して定義します。食べるという行動をeatというメソッドして定義します。このとき、体重が0.5キロ増加します。foodの属性を追加します。次に食べて寝るというメソッドを定義します。

インスタンス化し、実行します。

実行します。

まず、変な猫の体重は4.5kgでした、 eat、eatSpleepのメソッドを実行して、体重が1.0kg増加して5.5kgになりました。

まとめ

このようにしてメソッド、属性をまとめてクラスで表現することが「オブジェクト指向」でpythonコードを書くということです。

クラス

連載目次

初心者にもわかるオブジェクト指向

クラス

継承

ポリモーフィズム

インスタンス変数の隠ぺい

オーバーライドと多重継承

クラスメソッド

名前空間

グローバル変数とローカル変数の使い方

クラス変数にメソッドからアクセスする場合

カプセル化、プロパティ、ゲッター、セッターについての解説