質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

1644閲覧

PythonでTypeErrorが出ます

morfonica

総合スコア33

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/10/09 22:27

発生している問題・エラーメッセージ

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Python2系で出るメッセージです。

shell

1xxx % Python -V

でPythonのバージョンを確認してください。
これがpython2系ならそれが原因です。

表示されたのがPython3系であれば、表示されたPythonのバージョンとOSのバージョンを質問に追加してください。

投稿2021/10/09 23:32

ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

morfonica

2021/10/09 23:47

python -V を入力したら、Python 2.7.16と出力されました。 python3 -Vと結果が違うのですが正常でしょうか。
ppaul

2021/10/10 15:20

OSが書かれていませんが、Macだとそういうものです。 やはり、Python2系で動かしていたのですね。 Python3 script.py ならエラーは出なくなるはずです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問