連載
[Python入門]多重継承:Python入門(2/2 ページ)
Pythonでは複数のクラスを基にクラスを定義する「多重継承」が可能だ。その方法と、多重継承時にメソッドが呼び出される仕組みについて見ていこう。
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.