Haruchunのブログ

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

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

f:id:Haruchun:20200515142118j:plain

 

始めに

前回はジェネレータ式について学んでいきました。

今回はオブジェクト指向について学んでいきましょう。

 

前回の記事はこちら

haruchun.hatenablog.com

 

 

 

オブジェクト指向とは

オブジェクト指向とは、プログラミングを効率的に行うための考えの1つです。

オブジェクト指向プログラミングでは、関連の深いデータと操作をまとめて「オブジェクト」という部品によって、プログラミング構造を整理します。

オブジェクト指向プログラミングの基本となるのは、クラスインスタンスです。

 

 

 

クラスの定義

クラスとは、データと操作をまとめた構造の定義です。

Pythonでは、データはデータ属性、操作はメソッドで表現します。

 

クラスは以下のように定義します。

----------

class クラス:

----------

 

 

 

メソッドの定義

クラスの内側はインデントして、メソッドの定義を以下のように示します。

----------

class クラス名:

    def メソッド名(self , 引数 , ...):

        処理

----------

selfにはメソッドの操作対象となるインスタンスが入ります。

メソッドを使うメリットとして、名前の衝突を避けることができます。

 

例➀クラス、メソッドの定義

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

 

これらをまとめると以下のようになります。

<Pokemon.py>

f:id:Haruchun:20200515135121p:plain

 

 

インスタンスの生成

インスタンスの生成とは、クラスで定義したデータ属性を保存するためのメモリを確保し、データの属性を書き込むことができます。

先ほどの例➀では、インスタンスを生成する事で、名前やレベル、タイプ、特性をデータに書き込むことができます。

 

インスタンスは以下のように生成します。

----------

変数 = クラス名 ( )

----------

インスタンスに属するデータのことを、データ属性と呼びます。

また、データの属性を参照する場合には、以下のように書きます。

----------

変数 . データ属性名

----------

 

データの属性を変更したい場合は、以下のように書きます。

----------

変数 . データの属性名 = 値

----------

 

インスタンスを使ってメソッドを呼び出したい場合は、以下のように書きます。

----------

変数 . メソッド名(引数 , ...)

----------

変数にインスタンスが代入されているとき、そのインスタンスの元となるクラスで定義されたメソッドを呼び出します。

 

例➁インスタンスの生成

今作『ポケモン剣盾』の御三家、サルノリ、ヒバニー、メッソンで、その子達の要素は以下のようにします。

・名前:サルノリ(Grookey) レベル:1 タイプ:草(Grass) 特性:しんりょく(Overgrow)

名前:ヒバニー(Scorbunny) レベル:1 タイプ:炎(Fire) 特性:もうか(Blaze)

名前:メッソン(Sobble) レベル:1 タイプ:水(Water) 特性:げきりゅう(Trrent)

 

これらのインスタンスを生成しましょう。

<Pokemon.py>

f:id:Haruchun:20200516145821p:plain

インスタンスの生成は上記のようになります。

 

それでは表示し、確認してみましょう。

pythonコマンドを使って実行し、結果を確認してみましょう。

 

 

 

終わりに

今回はオブジェクト指向プログラミングについて学んでいきました。

 

それにしても、ポケモンは何年たっても楽しいよね!

ポケモンを楽しみつつ、お勉強を頑張っていきたいと思います。