ポリモーフィズム
次のコードを実行したときの出力として、正しいものを1つ選べ。
class A:
def f(self):
return self.g()
def g(self):
return "A"
class B(A):
def g(self):
return "B"
print(B().f())
- A
B - B
A - C
AB - D
None
正解と解説を見る
正解:A
メソッドは、実際のオブジェクトの型で決まる(動的な束縛)。親クラスのメソッドの中から、子クラスで上書きされたメソッドが呼ばれる。
| 順 | 実行する行 | 実行後の変数 |
|---|---|---|
| 1 | `class A:` | — |
| 2 | └ `def f(self):` | — |
| 3 | └ `def g(self):` | — |
| 4 | `class B(A):` | — |
| 5 | └ `def g(self):` | — |
| 6 | `print(B().f())` | — |
| 7 | └ `return self.g()` | — |
| 8 | └ `return "B"` | — |
| 結果 | 実際の出力 | B |
- A
正しい。
fの中のself.g()は、実際のオブジェクトのクラス(B)のメソッドを呼ぶ。 - B
誤り。
selfはBのインスタンス。 - C
誤り。呼ばれるのは 1 つ。
- D
誤り。値が返る。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。