← クエスト一覧

クエスト43:__str__を使おう

スライド 1 / 6
コーデ
💻 コード例
実行結果
← クエスト一覧
🐍 Python / Quest 43 / 85

クエスト43:__str__を使おう

応用 +10 XP
🏠
今回の課題
Point(3, 4)print すると「Point(3, 4)」と表示されるように、__str__ を定義しよう。
📖 解説を見る
🖨️ __str__ って何?

クラスに __str__ を定義すると、print() したときの表示を自分で決められます。定義しないと <__main__.Point object at 0x...> のような分かりにくい表示になります。

✏️ 書き方:
class Book:
    def __init__(self, title, year):
        self.title = title
        self.year = year
    def __str__(self):
        return f'{self.title}({self.year}年)'

print(Book('坊っちゃん', 1906))
 → 坊っちゃん(1906年)
中で print するのではなく、文字列を return するのがポイントです。

📋 作るもの:
Point クラスに __str__ というメソッドを追加する
・引数は self だけ
Point(3, 4) なら 'Point(3, 4)' という形の文字列を return する
・座標は self.xself.y で取り出せる(f文字列で組み立てよう)

💡 どこで使う?

自作クラスを print やログで確認するときに、人間が読める形で出せます。デバッグ中に中身をひと目で把握できるので、オブジェクトを扱うプログラムでは定義しておくと開発がぐっと楽になります。

⚠️ ポイント:
__str__ は文字列を return する(print しない)
print(オブジェクト) のときに自動で呼ばれる
ヒントを見る
print(オブジェクト) のときに自動で呼ばれる特別なメソッドだよ。表示するのではなく、文字列を return するのがポイント。カッコやカンマも含めて f文字列で組み立てよう。
期待する出力
Point(3, 4)
📄 見本
「答えを見る」を押すと、お手本のコードが出ます。クリックでコピーできます。
💻 コードエディタ
実行すると結果がここに表示されます
正解!見本と同じになりました。
次へ →
🏠 ホームへ

れんしゅうもんだい

☑ 0 / 3 正解 レッスンに戻る

全問正解でクエストクリア!

未挑戦

問題 1: Card('ハート', 'A') を print すると「ハートのA」と表示されるようにしよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
ハートのA
未挑戦

問題 2: Person('たろう', 12) を print すると「たろう(12歳)」と表示されるようにしよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
たろう(12歳)
未挑戦

問題 3: Book('Python入門', 500) を print すると「『Python入門』500円」と表示されるようにしよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
『Python入門』500円
コピーしました!