answer13_2_1.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です")
cats = [Cat("みけ", 3.0), Cat("もも", 4.5)]
# catsの要素それぞれから辞書を作り、リストにする
data = [{"name": c.name, "weight": c.weight} for c in cats]
# そのリストをJSONとしてファイルに出力する
with open("cats.json", "w", encoding="utf-8") as file_obj:
json.dump(data, file_obj, ensure_ascii=False)
# 章末問題 13章【2】(1)解答例
#
# 22行目で、辞書を要素とするリストを作り、25行目でそれを
# JSONエンコードしてファイルに出力しています。リストの各要素が辞書で、
# 辞書の各項目は文字列(名前)や浮動小数点数(体重)です。
# リストを25行目で書き出すデータとして指定することで、
# そこから参照されている辞書と、それがさらに参照されている文字列や
# 浮動小数点数が、JSONにエンコードされてファイルに出力されます。