Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの継承とは?「多重継承」「多段継承」の2種類をわかりやすく解説

Pythonにおける継承とは、あるクラスが別のクラスのメソッドや属性(プロパティ)を引き継いで利用できるようにする仕組みです。コードの再利用性を高め、プログラムの構造を整理するうえで欠かせない重要な概念です。

  • 親クラス(基底クラス):継承元となるクラス。「ベースクラス」とも呼ばれます。
  • 子クラス(派生クラス):他のクラスを継承して作られるクラス。

Pythonの継承には、主に次の2種類があります。

  • 多重継承(Multiple Inheritance)
  • 多段継承(Multilevel Inheritance)

多重継承とは

多重継承では、1つの子クラスが複数の親クラスを同時に継承できます。複数のクラスが持つ機能をひとつのクラスにまとめたい場合に有効です。

サンプルコード

class Father:
    fathername = ""
    def father(self):
        print(self.fathername)

class Mother:
    mothername = ""
    def mother(self):
        print(self.mothername)

class Daughter(Father, Mother):
    def parent(self):
        print("Father :", self.fathername)
        print("Mother :", self.mothername)

s1 = Daughter()
s1.fathername = "Srinivas"
s1.mothername = "Anjali"
s1.parent()

実行結果

Father : Srinivas
Mother : Anjali

この例では、Daughter クラスが Father クラスと Mother クラスという2つの親クラスを継承しており、両方の属性を利用できています。

多段継承とは

多段継承では、すでに何かを継承している子クラス(派生クラス)を、さらに別のクラスが継承します。これにより、親から子へ、そして孫へと機能が受け継がれる階層構造が形成されます。

サンプルコード

# Family クラスを継承した Father・Mother クラスを定義し、
# さらにそれらを Daughter クラスが継承しています。
class Family:
    def family(self):
        print("This is My family:")

class Father(Family):
    fathername = ""
    def father(self):
        print(self.fathername)

class Mother(Family):
    mothername = ""
    def mother(self):
        print(self.mothername)

class Daughter(Father, Mother):
    def parent(self):
        print("Father :", self.fathername)
        print("Mother :", self.mothername)

s1 = Daughter()
s1.fathername = "Srinivas"
s1.mothername = "Anjali"
s1.family()
s1.parent()

実行結果

This is My family:
Father : Srinivas
Mother : Anjali

Daughter のインスタンスから、祖父にあたる Family クラスのメソッド family() も呼び出せる点に注目してください。継承の階層を通じて、上位クラスの機能までまとめて利用できることがわかります。

まとめ

Pythonの継承は、「複数の親クラスから機能を受け継ぐ多重継承」と、「クラス階層を深くしながら機能を引き継ぐ多段継承」の2種類に大別されます。それぞれの特性を理解し、目的に応じて使い分けることで、再利用性と保守性の高いコードを書けるようになります。

  1. 直方体を一刀で切断!切り分けられたキューブの数を求めるPythonプログラム

    問題概要 一辺の長さが a、b、c の単位立方体(キューブ)を組み合わせて、a×b×c の直方体を作ることを考えます。ただし、a、b、c はペアごとに互いに素、すなわち gcd(a, b) = gcd(b, c) = gcd(c, a) = 1 を満たすものとします。 この直方体を、下の図のように頂点 P・Q・R を通る平面でたった一刀で2つに切断します。このとき、断面によって「2つに切り分けられてしまう」単位立方体が何個あるかを求めるのがこの問題です。複数のテストケースが配列として与えられるので、それぞれのケースについて答えを計算して返します。 切断は、頂点 P、Q、R の3点を通る平面

  2. Pythonの継承とは?単一継承と階層継承の基本をサンプルコードで解説

    本記事では、Python 3.xにおける継承(インヘリタンス)とクラスの拡張方法について詳しく解説します。 継承とは、現実世界のモノや概念の関係性を自然に表現できる、オブジェクト指向プログラミングの中核となる仕組みです。継承を活用すると、次のようなメリットが得られます。 再利用性:すでに書いたコードを流用でき、重複を削減できる 推移性:クラス間の関係を連鎖的に引き継げる 開発速度の向上:ゼロから書かずに済むため、短期間で開発できる 保守性・拡張性:既存クラスを壊さずに機能を追加しやすい 継承の5つの種類 Pythonの継承は、その構造によって主に以下の5種類に分類されます。 単一継承(