answer11_1_2.py
class Product:
"""商品を表すクラス。
属性:
_id(str):商品ID。
name(str):商品名。
price(int):価格。
"""
def __init__(self, _id, name, price):
self._id = _id
self.name = name
self.price = price
def __str__(self):
return f"{self._id} {self.name} {self.price}円"
class Cart:
"""ショッピングカートを表すクラス。
属性:
items(list):カートに入っている商品のリスト。
"""
def __init__(self):
self.items = []
def add_item(self, product):
"""productをカートに追加する。"""
self.items.append(product)
def show(self):
"""カートにある商品をすべて表示する。"""
for product in self.items:
print(product)
cart = Cart()
cart.add_item(Product("A101", "ミニポーチ", 648))
cart.add_item(Product("A502", "ソックス", 385))
cart.show()
# 章末問題 11章【1】(2)解答例
#
# コンストラクタCartは引数を持たないので、メソッド__init__の定義の
# 仮引数はselfのみとなります(26行目)。その本体では、空のカートと
# するために、インスタンス変数itemsを空リストにします(27行目)。
#
# メソッドadd_itemは(29行目〜)Product型のインスタンスを1つ
# 引数としてとるので、仮引数はselfと、そのインスタンスを受ける
# 変数とします(29行目)。変数名はproductとしました。メソッドの本体で、
# リストitemsにproductを追加します(31行目)。
#
# メソッドshowでは(33行目〜)itemsの要素をそれぞれprintします
# (35〜36行目)。print(product)とすれば、print関数がproductの
# __str__を呼び出して文字列を取得し、それを出力してくれます。