Python | クラスの多重継承の使い方

2021年6月4日

公開日:2021/6/4

Pythonでクラスを用いる際,複数のクラスから継承をすることができる.これをクラスの多重継承という.以下に多重継承の使い方を記す.

◆実施環境

Python 3.8.8

■クラスの多重継承を利用した基本的な構文

複数の親クラスを継承(多重継承)する際,子クラスの引数に親クラスのクラス名を以下のように記述する.

class ABC: # 親クラス1

省略

class DEF: # 親クラス2

省略

class GHI(ABC, DEF): #子クラス

以下に多重継承を利用した基本的な構文を記す.

# 1の処理
class Crow: # 親クラス1

  def __init__(self,name):
    self.crow_name = name

  def crow_intro(self):
    print(f'This is crow and name is {self.crow_name}')

  def crow_call(self):
    print('Crow call is ka ka')

class Sparrow: # 親クラス2

  def __init__(self,name):
    self.sparrow_name = name

  def sparrow_intro(self):
    print(f'This is sparrow and name is {self.sparrow_name}')

  def sparrow_call(self):
    print('Sparrow call is chun chun')

class Pigeon(Crow, Sparrow): # 子クラス

  def __init__(self,crow_name,sparrow_name,pigeon_name):
    Crow.__init__(self,crow_name)
    Sparrow.__init__(self,sparrow_name)
    self.pigeon_name = pigeon_name

  def pigeon_intro(self):
    print(f'This is pigeon and name is {self.pigeon_name}')

  def pigeon_call(self):
    Crow.crow_call(self)
    Sparrow.sparrow_call(self)
    print('Pigeon call is coo coo')

Bird_name = Pigeon('Kataro','Chuntaro','Cootaro')

Bird_name.crow_intro() # 8行目が出力
Bird_name.sparrow_intro() # 19行目が出力
Bird_name.pigeon_intro() # 32行目が出力

Bird_name.pigeon_call() # 35~37行目が出力

■実行結果

# 1の結果 
This is crow and name is Kataro 
This is sparrow and name is Chuntaro 
This is pigeon and name is Cootaro 

Crow call is ka ka 
Sparrow call is chun chun 
Pigeon call is coo coo

以上