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行目)。