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

Pythonのクラスと継承を徹底解説!基本構文からコード例まで

オブジェクト指向プログラミングは、プロジェクト内のコード重複(冗長化)を防ぐために、再利用可能なコードパターンを作成する手法です。その再利用性を実現する手段のひとつが継承(インヘリタンス)であり、サブクラスが基底クラスのコードを活用できる仕組みを指します。

継承とは何か

継承とは、あるクラスが別のクラス内に記述されたコードを引き継いで利用できるようにする仕組みです。

子クラス(サブクラス)と呼ばれるクラスは、親クラス(基底クラス)からメソッドや変数を受け継ぎます。

ChildサブクラスがParent基底クラスを継承している場合、ChildクラスはParentクラスのコードをそのまま再利用できます。これにより、プログラマはより少ない行数でコードを書くことができ、冗長性を大幅に削減できます。

派生クラスの宣言方法

派生クラスの宣言方法は親クラスとほぼ同じですが、クラス名の後に継承元となる基底クラスのリストを指定する点が異なります。

class SubClassName(ParentClass1[, ParentClass2, ...]):
    '任意のクラスドキュメント文字列'
    クラス本体(class_suite)

この構文では、複数の親クラスを指定することも可能で、これを多重継承と呼びます。

具体例

以下は、親クラスParentと子クラスChildを定義し、継承の動作を確認するサンプルコードです。

class Parent:        # 親クラスの定義
    parentAttr = 100

    def __init__(self):
        print("Calling parent constructor")

    def parentMethod(self):
        print('Calling parent method')

    def setAttr(self, attr):
        Parent.parentAttr = attr

    def getAttr(self):
        print("Parent attribute :", Parent.parentAttr)

class Child(Parent): # 子クラスの定義(Parentを継承)
    def __init__(self):
        print("Calling child constructor")

    def childMethod(self):
        print('Calling child method')

c = Child()          # 子クラスのインスタンス生成
c.childMethod()      # 子クラス自身のメソッドを呼び出す
c.parentMethod()     # 親クラスのメソッドを呼び出す
c.setAttr(200)       # 親クラスのメソッドで属性を設定
c.getAttr()          # 親クラスのメソッドで属性を取得

実行結果

上記のコードを実行すると、次のような結果が出力されます。

Calling child constructor
Calling child method
Calling parent method
Parent attribute :200

実行結果のポイント

  • c = Child() の時点で子クラスのコンストラクタが呼ばれます。
  • c.parentMethod() のように、子クラスのインスタンスからでも親クラスのメソッドを直接呼び出せます。
  • setAttr()getAttr() は親クラスで定義されたメソッドですが、継承によって子クラスのインスタンスがそのまま利用できています。

まとめ

Pythonの継承を使うことで、既存クラスの機能を引き継ぎながら新しいクラスを効率的に作成できます。コードの再利用性が高まり、保守性の向上や開発工数の削減にもつながります。さらに、super() 関数を使えば親クラスのコンストラクタやメソッドを明示的に呼び出せるため、より柔軟なクラス設計が可能になります。まずは基本的な継承の構文に慣れ、実際のコードで試してみることをおすすめします。

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

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

  2. Pythonでクラスを定義する方法を解説!基本構文と書き方のポイント

    Pythonでは、ほぼすべてのコードがクラスを使って実装されています。プログラマーはクラスを利用することで、関連性の高いコードをひとつにまとめて管理できます。これは「class」というキーワードによって実現されており、クラスはオブジェクト指向プログラミングの構成要素を集約したものです。クラスとは何かクラスとは、オブジェクト(インスタンス)を生成するための設計図・テンプレートです。オブジェクトはメンバー変数(属性)を持ち、それに関連付けられた振る舞い(メソッド)を備えています。Pythonでは、classキーワードを使うことでクラスを作成します。基本的なクラスの定義方法まずは、関数やメソッドを一