【Python】㉒オブジェクト指向プログラミング③
始めに
今回は、前回、前々回に引き続き、オブジェクト指向プログラミングについて学んでいきましょう。
前々回の記事はこちら
前回の記事はこちら
クラス属性と定数
前回のプログラム(Pokemon4.py)では、レベルの上限値(100)をif文の中に組み込んでいました。
もしも上限値を変更したくなった場合、以下のプログラムの'100'の部分を2カ所とも書き換える必要があります。
<Pokemon4.py>
こういった場合、変数や定数にすることがおすすめです。
例➀クラス属性と定数
今回もポケモンを例にしようと思います。
ポケモンの名前、レベル、タイプ、特性についてまとめ表示します。
表示するポケモンは、サルノリです。
前回のプログラミング(Pokemon4.py)のレベル上限に対し、定数を組み込みます。
<Pokemon5.py>
上記のように記述する事で、もしもレベル上限を変更したい場合、LEVEL_LIMIT=100の部分を変更するだけでよく、ミスが少なくなります。
継承
既存のクラスを拡張し、新しい機能を定義することができます。
このとき、新しいクラスは、既存のクラスの持つすべてを引き継ぎます。
このことを「継承」といいます。
また、このときの既存のクラスを「基底クラス」、新しいクラスを「派生クラス」といいます。
派生クラスの定義は以下のように行います。
----------
class 派生クラス(基底クラス名) :
メソッドや変数の定義
----------
例➁クラスの継承
Pokemonを基底クラスとして、サルノリ、ヒバニー、メッソンを定義します。
サルノリはレベル5で、「ひっかく(Scratch)」、「なきごえ(Grow!)」を覚えています。
<Pokemon6.py>
基底クラスにあるメソッドを派生クラスで再定義することを「オーバーライド」といいます。
上記のプログラムでは、__init__メソッドとElementsメソッドをオーバーライドしています。
多重継承
派生クラスの定義をする際に、複数の基底クラスを指定することができます。
多重係数は、以下のように表わします。
----------
class 派生クラス(基底クラス名 , 基底クラス名 , ...) :
メソッドや変数の定義
----------
複数の基底クラスから機能を継承する事を「多重継承」といいます。
終わりに
本日は、前回、前々回に引き続き、オブジェクト指向プログラミングについて学んでいきました。
ボリュームの多い分野であったので、自身で工夫して遊びつつ、慣れていきましょう!