おぼえがき

過ちては則ち改むるにうんぬんかんぬん

クラス継承について(Python)

f:id:feci:20210726231508j:plain

Python3

 

Python3.8.5でのクラス継承について。

#スーパークラス(親クラス)
class Ca(object):
  def fa(self):
    print('あいうえお')

#サブクラス(子クラス)
class Ca_a(Ca):          #引数に親クラスを指定することでクラスを継承
  def fb(self):
    print('かきくけこ')

#サブクラス(孫クラス)
class Ca_b(Ca_a):        #引数に子クラスを指定することで多重継承となる
  def fc(self):
    print('さしすせそ')

#実行
ca = Ca_a()  #サブクラス(子クラス)のインスタンスを作成
ca.fa()      #あいうえお ← 親クラスのメソッドを呼び出せる
ca.fb()      #かきくけこ ← 自クラスのメソッドも当然呼び出せる

cb = Ca_b()  #サブクラス(孫クラス)のインスタンスを作成
cb.fa()      #あいうえお ← 親のさらに親クラスのメソッドも呼び出せる
cb.fb()      #かきくけこ ← 親クラスのメソッドは当然呼び出せる

クラス継承とは、子クラスのインスタンスからでも親クラスのメソッド呼び出して使えるようにする機能のことです。

 

Pythonのクラス継承では、子クラスにしたいクラスの引数に親クラスにしたいクラス名を指定します。

これだけでクラス継承ができます。

 

子クラスのインスタンスからは親クラスのメソッドを呼び出すことができます。

しかし親クラスからは子クラスのメソッドにアクセスすることはできません。

 

またこのクラス継承は、さらに深く階層化することもできます。

つまりあるクラスの引数に子クラスのクラス名を指定すると、そのクラスを親クラスから見て孫クラスにすることができます。

 

孫クラスのインスタンスからは、子クラスと親クラスのメソッドを呼び出すことができます。

しかし子クラスや親クラスからは、孫クラスのメソッドにアクセスすることはできません。

 

このような3段階以上の階層構造をもったクラス継承のことを、多重継承と呼びます。

 

 

以上です。