Point(3, 4) を print すると「Point(3, 4)」と表示されるように、__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.x と self.y で取り出せる(f文字列で組み立てよう)print やログで確認するときに、人間が読める形で出せます。デバッグ中に中身をひと目で把握できるので、オブジェクトを扱うプログラムでは定義しておくと開発がぐっと楽になります。__str__ は文字列を return する(print しない)print(オブジェクト) のときに自動で呼ばれるPoint(3, 4)
全問正解でクエストクリア!
問題 1: Card('ハート', 'A') を print すると「ハートのA」と表示されるようにしよう!
問題 2: Person('たろう', 12) を print すると「たろう(12歳)」と表示されるようにしよう!
問題 3: Book('Python入門', 500) を print すると「『Python入門』500円」と表示されるようにしよう!