super() を使ったメソッドの呼び出し
次のコードを実行したときの出力として、正しいものを1つ選べ。
class A:
def hi(self):
return "A"
class B(A):
def hi(self):
return "B" + super().hi()
print(B().hi())
- A
B - B
A - C
BA - D
AB
正解と解説を見る
正解:C
サブクラスのメソッドは、親クラスの同名のメソッドを上書きする。super() で親クラスのメソッドを呼び出せる。
| 順 | 実行する行 | 実行後の変数 |
|---|---|---|
| 1 | `class A:` | — |
| 2 | └ `def hi(self):` | — |
| 3 | `class B(A):` | — |
| 4 | └ `def hi(self):` | — |
| 5 | `print(B().hi())` | — |
| 6 | └ `return "B" + super().hi()` | — |
| 7 | └ `return "A"` | — |
| 結果 | 実際の出力 | BA |
- A
誤り。親クラスのメソッドも呼ばれる。
- B
誤り。サブクラスのメソッドが優先される。
- C
正しい。
super().hi()で親クラスのメソッドを呼び出す。 - D
誤り。文字列の順序が逆。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。