answer13_2_2.py
import json
class Cat:
"""猫を表すクラス。
属性:
name(str):猫の名前。
weight(float):猫の体重(kg)。
"""
def __init__(self, name, weight):
self.name = name
self.weight = weight
def show_info(self):
print(f"名前は{self.name}、{self.weight} kgです")
# 辞書のリストとしてCatインスタンスの情報が格納されているJSONファイルを読む
with open("cats.json", "r", encoding="utf-8") as file_obj:
data = json.load(file_obj)
# 読んだdataからCatクラスのインスタンスを復元する
cats = [Cat(c["name"], c["weight"]) for c in data]
# 復元されたインスタンスの情報を表示する
for cat in cats:
cat.show_info()
# 章末問題 13章【2】(2)解答例
#
# 21行目でJSONファイルをデコードして得られるdataは、辞書を要素とする
# リストです。各辞書が持つnameとweightの情報から、Catコンストラクタを
# 使ってインスタンスを生成し、それをリストにしてcatsに代入します
# (24行目)。正しく復元されたかどうかをshow_infoを使って確認しています
# (26〜27行目)。