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

» 2019年08月27日 05時00分 公開
[かわさきしんじDeep Insider編集部]
前のページへ 1|2       

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クラスの動作を確認するコード

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

実行結果 実行結果

前のページへ 1|2       

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。