フタミノブログ

マーケティングから技術まで色々

Pythonチュートリアルをやってみる その7

f:id:nimi0370376:20170718002912p:plain

第7回目です。今回は、クラスの後半からやっていきます。

クラスはPythonの中でも非常に重要な概念です。Pythonだけじゃなくてプログラミングの中で大事なので2回に分けてます。

 

クラスの前半は、下記リンクからどうぞ。

nimi0370376.hatenablog.com

 

第9章 クラス(後半)

9-4 継承

Pythonでもクラスをしっかり継承することができる。次の形で引き継ぐことができる。ちなみにここで、元々のクラスを基底クラス、引き継ぐ方を派生クラスと呼びます。

 

class DerivedClassName(BaseClassName):

    <文1>

        :

        :

        :

   <文N>

 

派生クラスは、基底クラスのメソッドをオーバーライドできる。メソッドがオブジェクト内の別のメソッドをコールする際に特別な権限があるわけではないため、基底クラスのメソッドが自分のクラスの別メソッドをコールしようとするときに、それをオーバーライドしている派生クラスのメソッドをコールさせることができる。

 

f:id:nimi0370376:20170718002912p:plain

 

baseクラスとderクラスには共通してbというメソッドが定義されている。baseクラスをbという変数に入れている。一方でderクラスをdという変数に代入している。

 

ここで、bをaメソッドでコールするとそのままbクラスで定義したメソッドで呼び出される。一方でdをaメソッドでコールするとbだけオーバーライドされて新たな文章がコールされる。

 

9-5 多重継承

Pythonでは、多重継承の一形態もサポートしている。形は下記のようになる。

 

f:id:nimi0370376:20170718004436p:plain

 

親クラスから継承した属性の探索順序は、ごく単純な大奥の用途では、次のように考えることができる。深度優先で左から右へ、継承の階層構造に重複があっても同じクラスは探索しないである。つまりBase1からBase2からBase3の順となる。

 

 

9-6 残り物あれこれ

名前のついたデータアイテムを集めておくデータ型が便利なことがある。空のクラス定義を使うのがうまい。

 

 

f:id:nimi0370376:20170718005315p:plain

 

他にもジェネレータや、コンテナオブジェクトをループするとかあるんだけど、使うときになったら言及しようと思う。