発生している問題・エラーメッセージ
xxx % Python script.py Traceback (most recent call last): File "script.py", line 6, in <module> food1 = Food('サンドイッチ', 500, 330) File "/xxx/food.py", line 8, in __init__ super().__init__(name, price) TypeError: super() takes at least 1 argument (0 given)
### 該当コード
script.py
# -*- coding: utf-8 -*- from food import Food from drink import Drink food1 = Food('サンドイッチ', 500, 330) food2 = Food('チョコケーキ', 400, 450) food3 = Food('シュークリーム', 200, 180) foods = [food1, food2, food3] drink1 = Drink('コーヒー', 300, 180) drink2 = Drink('オレンジジュース', 200, 350) drink3 = Drink('エスプレッソ', 300, 30) drinks = [drink1, drink2, drink3] print('食べ物メニュー') index = 0 for food in foods: print(str(index) + '. ' + food.info()) index += 1 print('飲み物メニュー') index = 0 for drink in drinks: print(str(index) + '. ' + drink.info()) index += 1 print('--------------------') food_order = int(input('食べ物の番号を選択してください: ')) selected_food = foods[food_order] drink_order = int(input('飲み物の番号を選択してください: ')) selected_drink = drinks[drink_order] count = int(input('何セット買いますか?(3つ以上で1割引): ')) result = selected_food.get_total_price( count) + selected_drink.get_total_price(count) print('合計は' + str(result) + '円です')
menu_item.py
# -*- coding: utf-8 -*- class MenuItem: def __init__(self, name, price): self.name = name self.price = price def info(self): return self.name + ': ¥' + str(self.price) def get_total_price(self, count): total_price = self.price * count if count >= 3: total_price *= 0.9 return round(total_price)
food.py
# -*- coding: utf-8 -*- from menu_item import MenuItem class Food(MenuItem): def __init__(self, name, price, calorie): super().__init__(name, price) self.calorie = calorie def info(self): return self.name + ': ¥' + str(self.price) + ' (' + str(self.calorie) + 'kcal)' def calorie_info(self): print(str(self.calorie) + 'kcalです')
drick.py
# -*- coding: utf-8 -*- from menu_item import MenuItem class Drink(MenuItem): def __init__(self, name, price, amount): super().__init__(name, price) self.amount = amount def info(self): return self.name + ': ¥' + str(self.price) + ' (' + str(self.amount) + 'mL)'
試したこと
引数を見直しただけです。
補足情報(FW/ツールのバージョンなど)
Python 3.8.2
pyenv 2.1.0-7-g88c34049
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/09 23:47
2021/10/10 15:20