Pythonは多重継承をサポートしていますか?基本とサンプルコードを解説
はい、Pythonは多重継承をサポートしています。
C++と同様に、Pythonでも1つのクラスを複数の基底クラス(ベースクラス)から派生させることができます。これを「多重継承」と呼びます。
多重継承では、すべての基底クラスの機能(属性やメソッド)が派生クラスに引き継がれます。
サンプルコード
class Animal:
def eat(self):
print("It eats insects.")
def sleep(self):
print("It sleeps in the night.")
class Bird(Animal):
def fly(self):
print("It flies in the sky.")
def sing(self):
print("It sings a song.")
print(issubclass(Bird, Animal))
Koyal = Bird()
print(isinstance(Koyal, Bird))
Koyal.eat()
Koyal.sleep()
Koyal.fly()
Koyal.sing()上記の例では、Bird クラスが Animal クラスを継承しています。
- Animal は親クラスであり、「スーパークラス」または「基底クラス」とも呼ばれます。
- Bird は子クラスであり、「サブクラス」または「派生クラス」とも呼ばれます。
issubclass メソッドを使うことで、Bird が Animal クラスのサブクラスであることを確認できます。また、生成したインスタンス Koyal に対して isinstance を用いることで、それが Bird クラスのオブジェクトであるかどうかをチェックしています。
さらに、Animal クラスで定義された eat() メソッドや sleep() メソッドは、Bird クラスのインスタンスからそのまま呼び出せる点にも注目してください。これこそが継承のメリットです。
実行結果
True True It eats insects. It sleeps in the night. It flies in the sky. It sings a song.
補足:多重継承時のメソッド解決順序(MRO)
複数の基底クラスに同じ名前のメソッドが存在する場合、Pythonは「MRO(Method Resolution Order:メソッド解決順序)」と呼ばれる仕組みに従って、どのクラスのメソッドを優先的に使用するかを決定します。MROは ClassName.__mro__ や ClassName.mro() で確認できるため、多重継承を利用する際は意識しておくと良いでしょう。
-
【C++入門】多重継承の基本と実装方法をわかりやすく解説
多重継承(Multiple Inheritance)とは多重継承とは、ひとつのクラスが複数の基底クラス(親クラス)から派生する仕組みのことです。多重継承を利用することで、派生クラスは複数の基底クラスが持つ機能やデータメンバをまとめて引き継ぐことができます。これはC++に代表されるオブジェクト指向プログラミング言語における重要な機能のひとつです。多重継承の構造を表した図が以下になります。C++で多重継承を実装するサンプルプログラムここでは、C++で多重継承を実装したサンプルプログラムを紹介します。クラスCが、クラスAとクラスBの2つのクラスを同時に継承する例です。サンプルコード#include
-
Pythonの継承とは?単一継承と階層継承の基本をサンプルコードで解説
本記事では、Python 3.xにおける継承(インヘリタンス)とクラスの拡張方法について詳しく解説します。 継承とは、現実世界のモノや概念の関係性を自然に表現できる、オブジェクト指向プログラミングの中核となる仕組みです。継承を活用すると、次のようなメリットが得られます。 再利用性:すでに書いたコードを流用でき、重複を削減できる 推移性:クラス間の関係を連鎖的に引き継げる 開発速度の向上:ゼロから書かずに済むため、短期間で開発できる 保守性・拡張性:既存クラスを壊さずに機能を追加しやすい 継承の5つの種類 Pythonの継承は、その構造によって主に以下の5種類に分類されます。 単一継承(