そこで、まずは先ほどのコードを次のように修正しよう。
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__()
これはobjectクラスをダイヤモンドの頂点としてBクラスとCクラスがそれを継承して、DクラスはCクラスとBクラスを継承するというものだ。そして、Dクラスの__init__メソッドは「基底クラスの__init__メソッド」を呼び出すようにしている。
では、以下のコードでDクラスの動作を見てみよう。
d = D()
print(D.__mro__)
このコードを実行すると、次のような結果になる。
Copyright© Digital Advantage Corp. All Rights Reserved.