Haruchunのブログ

大学生の'春'のお勉強の備忘録

【Python】㉒オブジェクト指向プログラミング③

f:id:Haruchun:20200517094022j:plain

 

始めに

今回は、前回、前々回に引き続き、オブジェクト指向プログラミングについて学んでいきましょう。

 

前々回の記事はこちら

haruchun.hatenablog.com

 

 

前回の記事はこちら

haruchun.hatenablog.com

 

 

 

クラス属性と定数

 前回のプログラム(Pokemon4.py)では、レベルの上限値(100)をif文の中に組み込んでいました。

もしも上限値を変更したくなった場合、以下のプログラムの'100'の部分を2カ所とも書き換える必要があります。

<Pokemon4.py>

f:id:Haruchun:20200516163928p:plain

 

こういった場合、変数や定数にすることがおすすめです。

 

例➀クラス属性と定数

今回もポケモンを例にしようと思います。

ポケモンの名前、レベル、タイプ、特性についてまとめ表示します。

表示するポケモンは、サルノリです。

前回のプログラミング(Pokemon4.py)のレベル上限に対し、定数を組み込みます。

<Pokemon5.py>

f:id:Haruchun:20200517075734p:plain

 

上記のように記述する事で、もしもレベル上限を変更したい場合、LEVEL_LIMIT=100の部分を変更するだけでよく、ミスが少なくなります。

 

 

 

継承

既存のクラスを拡張し、新しい機能を定義することができます。

このとき、新しいクラスは、既存のクラスの持つすべてを引き継ぎます。

このことを「継承」といいます。

また、このときの既存のクラスを「基底クラス」、新しいクラスを「派生クラス」といいます。

派生クラスの定義は以下のように行います。

----------

class 派生クラス(基底クラス名) : 

    メソッドや変数の定義

----------

 

例➁クラスの継承

Pokemonを基底クラスとして、サルノリ、ヒバニー、メッソンを定義します。

サルノリはレベル5で、「ひっかく(Scratch)」、「なきごえ(Grow!)」を覚えています。

 

<Pokemon6.py>

f:id:Haruchun:20200517092557p:plain

基底クラスにあるメソッドを派生クラスで再定義することを「オーバーライド」といいます。

上記のプログラムでは、__init__メソッドとElementsメソッドをオーバーライドしています。

 

 

 

多重継承

派生クラスの定義をする際に、複数の基底クラスを指定することができます。

多重係数は、以下のように表わします。

----------

class 派生クラス(基底クラス名 , 基底クラス名 , ...) : 

    メソッドや変数の定義

----------

 

複数の基底クラスから機能を継承する事を「多重継承」といいます。

 

 

 

終わりに

本日は、前回、前々回に引き続き、オブジェクト指向プログラミングについて学んでいきました。

ボリュームの多い分野であったので、自身で工夫して遊びつつ、慣れていきましょう!