__str__ と __repr__
次のコードを実行したときの出力として、正しいものを1つ選べ。
class P:
def __str__(self):
return "s"
def __repr__(self):
return "r"
print(P(), [P()], f"{P()!r}")
- A
r [r] r - B
s [r] r - C
s [s] s - D
s [r] s
正解と解説を見る
正解:B
__str__ は読み手向けの表示(print・str)、__repr__ は開発者向けの表示(repr・リストの中の要素・対話モード)。
| 順 | 実行する行 | 実行後の変数 |
|---|---|---|
| 1 | `class P:` | — |
| 2 | └ `def __str__(self):` | — |
| 3 | └ `def __repr__(self):` | — |
| 4 | `print(P(), [P()], f"{P()!r}")` | — |
| 5 | └ `return "r"` | — |
| 6 | └ `return "s"` | — |
| 7 | └ `return "r"` | — |
| 結果 | 実際の出力 | s [r] r |
- A
誤り。
printは__str__を使う。 - B
正しい。
printは__str__を、リストの中の要素の表示や!rは__repr__を使う。 - C
誤り。リストの要素は
reprで表示される。 - D
誤り。
!rはrepr。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。