検索
連載

[Python入門]多重継承Python入門(2/2 ページ)

Pythonでは複数のクラスを基にクラスを定義する「多重継承」が可能だ。その方法と、多重継承時にメソッドが呼び出される仕組みについて見ていこう。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

super関数とMRO

 そこで、まずは先ほどのコードを次のように修正しよう。

class B:
    def __init__(self):
        self.b_value = 'B'
        print('class B init')

class C:
    def __init__(self):
        self.c_value = 'C'
        print('class C init')

class D(C, B):
    def __init__(self):
        print('class D init')
        super().__init__()

「super().__init__()」は何を呼び出すか

 これはobjectクラスをダイヤモンドの頂点としてBクラスとCクラスがそれを継承して、DクラスはCクラスとBクラスを継承するというものだ。そして、Dクラスの__init__メソッドは「基底クラスの__init__メソッド」を呼び出すようにしている。

 では、以下のコードでDクラスの動作を見てみよう。

d = D()
print(D.__mro__)

Dクラスの動作を確認するコード

 このコードを実行すると、次のような結果になる。

実行結果
実行結果

前のページへ |       

Copyright© Digital Advantage Corp. All Rights Reserved.

ページトップに戻る