Python 模擬試験

Python実践 模擬試験 第2回 問13・4章 Pythonのクラス(継承)

super().__init__

次のコードを実行したときの出力として、正しいものを1つ選べ。

class A:
    def __init__(self):
        print("A")
class B(A):
    def __init__(self):
        super().__init__()
        print("B")
B()
  1. A

    B のみが出力される。

  2. B

    B、A が、この順に出力される。

  3. C

    A のみが出力される。

  4. D

    A、B が、この順に別々の行に出力される。

正解と解説を見る

正解:D

サブクラスの __init__ では、super().__init__() で親クラスの初期化を呼ぶ。呼び忘れると、親の属性が設定されない。

順実行する行実行後の変数
1`class A:`—
2└ `def __init__(self):`—
3`class B(A):`—
4└ `def __init__(self):`—
5`B()`—
6└ `super().__init__()`—
7└ `print("A")`—
8└ `print("B")`—
結果実際の出力A / B

学習のポイント:多重継承では、super() が MRO に沿って次のクラスを呼ぶ。

この問題を演習で解く →

問題一覧へ

このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。