Python
Q&A
解決したいこと
Pythonのfood.pyのself.name = name
の意味と、他のモデュールのコードとどんな
関係性があるのか、わからない。
頭がこんがらがってしまったので、
わかりやすく説明してください!
。
全てのコード(一覧)
from menu_item import MenuItem
class Food(MenuItem):
# __init__ メソッドを定義してください
def __init__(self, name, price, calorie):
self.name = name
self.price = 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です')
from food import Food
from drink import Drink
# Food() に引数を追加してください
food1 = Food('サンドイッチ', 500, 330)
# 以下の1行は削除してください
# food1.calorie = 330
print(food1.info())
drink1 = Drink('コーヒー', 300)
drink1.amount = 180
print(drink1.info())
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)
from menu_item import MenuItem
class Drink(MenuItem):
def info(self):
return self.name + ': ¥' + str(self.price) + ' (' + str(self.amount) + 'mL)'
自分で試したこと
以下がCHAT GPTの回答(説明を見てもわからなかったので、)
Food クラスの __init__ メソッドについて
python
コードをコピーする
class Food(MenuItem):
def __init__(self, name, price, calorie):
self.name = name
self.price = price
self.calorie = calorie
簡潔な解説と関連性
__init__ メソッドは、クラスのインスタンスが生成されるときに呼び出される特別なメソッドです。このメソッドは、インスタンスの属性(プロパティ)を初期化するために使われます。
self.name = name
name は、Food クラスのインスタンスを作成するときに渡される引数です。この引数の値を、インスタンスの name 属性に設定します。
例: food1 = Food('サンドイッチ', 500, 330) の場合、name は 'サンドイッチ' となり、self.name には 'サンドイッチ' が代入されます。
self.price = price
price も引数として渡され、その値がインスタンスの price 属性に設定されます。
例: price は 500 となり、self.price には 500 が代入されます。
self.calorie = calorie
calorie も引数として渡され、その値がインスタンスの calorie 属性に設定されます。
例: calorie は 330 となり、self.calorie には 330 が代入されます。
__init__ メソッドの役割
__init__ メソッドの役割は、インスタンスが作成されるときにそのインスタンスに必要な初期データを設定することです。上記の例では、Food クラスのインスタンスが作成されるときに、name, price, calorie の3つの属性が設定されます。
info メソッドとの関連
info メソッドでは、これらの属性を使って情報を整形して返しています。具体的には、self.name, self.price, self.calorie の属性を利用して文字列を作成します。
python
コードをコピーする
def info(self):
return self.name + ': ¥' + str(self.price) + ' (' + str(self.calorie) + 'kcal)'
この info メソッドを呼び出すと、Food インスタンスの名前、価格、カロリーが整形された文字列として出力されます。
Drink クラスとの比較
同様に、Drink クラスも MenuItem クラスを継承し、info メソッドで情報を整形して出力します。ただし、Drink クラスには calorie 属性がない代わりに amount 属性があります。
python
コードをコピーする
class Drink(MenuItem):
def info(self):
return self.name + ': ¥' + str(self.price) + ' (' + str(self.amount) + 'mL)'
まとめ
self.name = name, self.price = price, self.calorie = calorie は、それぞれの引数をクラスのインスタンス属性として設定するためのコードです。
__init__ メソッドは、クラスのインスタンスが作成されるときに属性を初期化する役割を持っています。
info メソッドは、これらの属性を使って情報を整形して返すメソッドです。。