Pythonチュートリアルをやってみる その7
第7回目です。今回は、クラスの後半からやっていきます。
クラスはPythonの中でも非常に重要な概念です。Pythonだけじゃなくてプログラミングの中で大事なので2回に分けてます。
クラスの前半は、下記リンクからどうぞ。
第9章 クラス(後半)
9-4 継承
Pythonでもクラスをしっかり継承することができる。次の形で引き継ぐことができる。ちなみにここで、元々のクラスを基底クラス、引き継ぐ方を派生クラスと呼びます。
class DerivedClassName(BaseClassName):
<文1>
:
:
:
<文N>
派生クラスは、基底クラスのメソッドをオーバーライドできる。メソッドがオブジェクト内の別のメソッドをコールする際に特別な権限があるわけではないため、基底クラスのメソッドが自分のクラスの別メソッドをコールしようとするときに、それをオーバーライドしている派生クラスのメソッドをコールさせることができる。
baseクラスとderクラスには共通してbというメソッドが定義されている。baseクラスをbという変数に入れている。一方でderクラスをdという変数に代入している。
ここで、bをaメソッドでコールするとそのままbクラスで定義したメソッドで呼び出される。一方でdをaメソッドでコールするとbだけオーバーライドされて新たな文章がコールされる。
9-5 多重継承
Pythonでは、多重継承の一形態もサポートしている。形は下記のようになる。
親クラスから継承した属性の探索順序は、ごく単純な大奥の用途では、次のように考えることができる。深度優先で左から右へ、継承の階層構造に重複があっても同じクラスは探索しないである。つまりBase1からBase2からBase3の順となる。
9-6 残り物あれこれ
名前のついたデータアイテムを集めておくデータ型が便利なことがある。空のクラス定義を使うのがうまい。
他にもジェネレータや、コンテナオブジェクトをループするとかあるんだけど、使うときになったら言及しようと思う。