1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

子供の想像力を伸ばしアイデアを形にする小学生向けプログラミング教室「プロスタキッズ」

Python超入門その19〜クラスを作ってOOPを実践してみよう〜

Pocket

はじめに

オブジェクト指向の考え方がおおまかにでもつかめましたか?

オブジェクト指向の考え方はどの言語でもほぼ共通なので、他の言語を学んだことがある方はそれほど苦労せずに理解できるでしょう。
Pythonが初めての言語という方は、とにかくコードを書いて、オブジェクト指向に触れてみることが重要です。
実践を通してオブジェクト指向を学んでいきましょう。

この記事では、Python初心者の方向けに、Pythonでのオブジェクト指向プログラミングについて説明していきます。ぜひ自分で指を動かしてプログラミングしましょう。

オブジェクト指向のおさらい

オブジェクト指向は、オブジェクト(もの、物体)を中心としてプログラミングを進めていくパラダイム(考え方、見方)のことです。
たとえば、数値や日付、ファイルなどがオブジェクトとして捉えることができます。

Pythonでは、オブジェクトを表現するために「クラス」と「インスタンス」を使います。

まずは、クラスの基本的な定義方法からみていきましょう。

基本的なクラスの定義方法とインスタンス化

クラスには、メンバ変数とメソッド(関数)を持たせることができます。
たとえば、次のような例をみてみましょう。

例:

 

この例では、Helloクラスを定義して、メンバ変数nameとメソッドsetnameおよびsayを持たせてあります。
メンバ変数については通常の変数定義と変わりありませんね。

一方、メソッドについては少し違いあります。メソッドは第一引数に自分自身のインスタンス(self)を受け取ります。これがどのように動作するかは、次の例で確認してみましょう。

例:

 

この例では、先程作ったHelloクラスをインスタンス化しています。
クラスはインスタンス化しないと使うことができませんので、クラス名でコンストラクタ(関数)を呼び出してインスタンスを変数(hello)に割り当てています。

注目してほしいのは、次のsayメソッドです。先程、sayメソッドの引数にselfを定義しました。
しかし、メソッドを呼び出すときには、第一引数は必要ありません。自動的に自分自身のインスタンス(この例ではhello変数に代入されているオブジェクト)が渡されます。

そのため、sayメソッド側では、自分自身のインスタンスに存在するname変数にアクセスできるというわけです。
さらに重要なことは、インスタンスは複数作成でき、互いに独立しているということです。たとえば、次のように同じクラスから2個目のインスタンスを作成しても互いのメンバ変数は影響を受けません。

例:

 

この例では、setnameメソッドを使って、name変数を書き換えています。setnameメソッドを呼び出すときの引数が一つだけであることに注意して下さい。

実行すると、helloインスタンスとhello2インスタンスではsayメソッドの結果が異なることが確認できるでしょう。
このように、インスタンスはクラスのコピーのように振る舞います。

オブジェクト指向の真髄は継承にあり

クラスに関連する話題として、継承(サブクラス)があります。

これは、クラスに親子関係を持たせるものです。
次の例をみて下さい。

例:

 

この例では、3つのクラス(Animal、Dog、Cat)を定義しています。

DogクラスとCatクラスの定義をよく見て下さい。
この2つのクラスは、Animalクラスを継承しているサブクラスなのです。

サブクラスは、親になっているクラスの定義をそのまま引き継ぎます。もちろん、そのままでは意味がないので、ここではcallメソッドを上書きして再定義しています。

実行すると、親のメンバ変数やメソッドを引き継ぎつつ、上書きしたメソッドがしっかり呼び出されていることが確認できるでしょう。

このように、継承をうまく使えばコードの重複を防ぐことができます。

まとめ

実際にコードを書いてみて、オブジェクト指向への理解が深まりましたか?

クラスやインスタンス、継承(サブクラス)などの基本的な概念を忘れないようにしましょう。
プログラミング初心者の方は、今すぐに理解できなくてもかまいません。

オブジェクト指向を意識しつつ、学習を進めていけば、いずれ自然と理解できるようになるでしょう。

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

初心者がプログラミングで挫折しない学習方法を無料動画で公開中。オンラインに特化したプログラミングスクール「TechAcademy(テックアカデミー)」が解説。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

ページ上部へ戻る