生成AIと学ぶPython18: 継承

継承とは何か

継承とは何か?

継承は、オブジェクト指向プログラミングの中心的な概念の一つで、あるクラス(スーパークラスまたは親クラスと呼ばれる)の属性やメソッドを別のクラス(サブクラスまたは子クラスと呼ばれる)が引き継ぐことを指します。これにより、既存のコードの再利用とコードの組織化が可能になります。

継承は、一般的には「is-a」の関係を表現します。例えば、「Student is a Person」(学生は人間である)のように、サブクラスはスーパークラスの特定のタイプであると考えることができます。

Pythonでのクラス継承の基本的な方法

Pythonでは、クラスを定義する際に、括弧内にスーパークラスを指定することで継承を行います。以下に基本的な形式を示します。

class SuperClass:
    pass

class SubClass(SuperClass):
    pass

上記のコードでは、SubClassSuperClassから継承しています。これにより、SuperClassに定義された属性やメソッドはSubClassからアクセス可能となります。これを拡張して、SubClassにはSuperClassにはない新たな属性やメソッドを追加したり、同名のメソッドをオーバーライド(上書き)することも可能です。

基底クラス(スーパークラス)のメソッドのオーバーライド、基底クラスのメソッドの拡張

メソッドのオーバーライド
メソッドのオーバーライドとは、サブクラス(子クラス)がスーパークラス(親クラス)のメソッドを新たな定義で上書きすることを指します。これにより、サブクラスはスーパークラスとは異なる振る舞いをするメソッドを持つことができます。Pythonでメソッドをオーバーライドするには、サブクラス内に同名のメソッドを定義します。

class SuperClass:
    def method(self):
        print("SuperClass method")

class SubClass(SuperClass):
    def method(self):  # Overriding SuperClass's method
        print("SubClass method")

基底クラスのメソッドの拡張

基底クラスのメソッドを拡張するとは、サブクラスがスーパークラスのメソッドをオーバーライドしつつ、そのオリジナルの機能を部分的にまたは完全に保持することを指します。これは、super() 関数を使って行われます。super() 関数は、スーパークラスのメソッドを呼び出すために使用されます。

以下に、この概念を示す基本的なコードを示します。

class SuperClass:
    def method(self):
        print("SuperClass method")

class SubClass(SuperClass):
    def method(self):  # Extending SuperClass's method
        super().method()
        print("SubClass method")  # Additional functionality

このコードでは、SubClassmethodメソッドがSuperClassの同名のメソッドを拡張しています。まず、super().method()によってスーパークラスのメソッドが呼び出され、その後でサブクラス独自の機能が実行されます。

この記事が気に入ったらサポートをしてみませんか?