Diagonal M

データサイエンス系長期インターンで学んだことなど

【Python】オブジェクト指向プログラミング vol.2 ~オブジェクトでの表現~

Pythonオブジェクト指向の勉強の続きです

プログラムにおけるオブジェクトの表現

オブジェクトは自分に所属する関数を保持できます。

以下のコードを見てください。

f = open('diagonal_m.txt', 'w')
f.write('diagonal')
f.close()

これはdiagonal_mというテキストファイルを開きdiagonalという文字列を書き込むコードdす。1行目でopenという関数を実行することでファイルオブジェクトが戻り値として返ります。ファイルオブジェクトに対してドットを使うことで、そのオブジェクトが保有している関数を呼び出すことができています。

別の例で、文字列を例に挙げます。文字列もオブジェクトですので文字列オブジェクトが保有する関数を利用することができます。

str = 'Daiagonal_M'
str.lower()
# daiagonal_m
str.upper()
# DAIAGONAL_M

lower()は文字列をすべて小文字に変換する関数で、upper()は小文字を大文字に変換する関数です。文字列としての型と、'Diagonal_M'という値を持ちながら、かつ関数を保有できます。

オブジェクトでの表現

プログラミングにおいては「成果物と構成要素に分解して、その要素がどんな情報を持つ必要ががあり、どのような動作を行えば良いのか」を考えなければなりません。つまりその構成要素をオブジェクトとして抽出し、必要な情報と動作を規定していくことになります。

例として「サッカーゲームの選手」をオブジェクトを用いて表現してみます。

サッカー選手の持つ属性として考えられるのは、例えば以下のようなものがあります。

  • 名前
  • 所属チーム
  • ポジション
  • 攻撃
  • 特殊
  • 技術
  • 守備

f:id:diagonal-m:20190717151102p:plain
ポケサカ

この内容をPythonで表現すると以下のようになります。playerというオブジェクトが仮に存在するとします。

player.name = 'クリステファン・ローディ'
player.team = 'R・マドリード'
player.position = 'FW'
player.attack = 409
player.special = 391
player.heart = 310
player.technique = 395
player.defense = 193

このようにキャラクターがもつ普遍的な属性を定義しておいて、適切なデータを代入しています。上のコードのテンプレートに該当するものをプログラミング用語でクラスといい、クラスのテンプレートから作られたオブジェクトのことをインスタンスといいます。

まとめ

  • クラスとは管理対象となる情報と振る舞いを定義したテンプレートのこと
  • インスタンスは、クラスの情報をすべて受け継いで生成されたオブジェクトのこと
  • インスタンスにどのようなデータを持たせるかはクラスで定義する

次回はクラスの定義方法についてまとめます。