前提・実現したいこと
インスタンスをリストのように格納する関数を作成したいのですが、どのようなコードを書けばいいのでしょうか?
発生している問題・エラーメッセージ
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-223-7a22154e3b02> in <module> 20 21 for i in range(1,5): ---> 22 print('商品名:{0}, 価格 :{1},カロリー:{2}'.format(cake[i].name,cake[i].price,cake[i].calorie)) TypeError: 'Menu' object is not subscriptable
該当のソースコード
class Menu: def __init__(self,name,price,calorie): self.name = name self.price = price self.calorie = calorie def info(self): return 'name : {} , price : {} , calorie : {}'.format(self.name,self.price,self.calorie) drink1 = Menu('cola',120,50) drink2 = Menu('tea',60,20) drink3 = Menu('mineral water',100,10) drink4 = Menu('ryokucha',120,20) cake1 = Menu('monbrancake',500,600) cake2 = Menu('shortcake',600,300) cake3 = Menu('cheesecake',800,700) cake4 = Menu('macchacake',400,500) for i in range(1,5): print('商品名:{0}, 価格 :{1},カロリー:{2}'.format(cake[i].name,cake[i].price,cake[i].calorie))
試したこと
cake_list.append(cake1) cake_list.append(cake2) for i in range(1,3): print(cake_list[i].name) #monbrancake shortcake
このようにすると取り出せるのですが、
cake1のすべてのname,price,calorieを
同時に取り出したいです。
もっとスマートな書き方が知りたいです。
> cake1のすべてのname,price,calorieを
とありますがcake1はひとつずつのname,price,calorieしか持っていないので誤記か、不足があると思います。
発生している問題・エラーメッセージと該当のソースコードが合っていないようにも見えます(ソースコードにcakeがない)。
質問は修正可能ですので直すとよいでしょう。
回答4件
あなたの回答
tips
プレビュー