メモ(Python IV)
クラス作成とインスタンス生成
class MenuItem: pass menu_item1=MenuItem()
インスタンス変数への値の代入と出力
- menu_item1に「name」が「サンドイッチ」であるという情報を追加することができる
- この時、「name」のことを「インスタンス変数」と呼ぶ
class MenuItem: pass menu_item1 = MenuItem() menu_item1.name = 'サンドイッチ' print(menu_item1.name) menu_item1.price = 500 print(menu_item1.price)
メソッド定義と呼び出し
- クラスの中で定義した関数のことをメソッドと呼ぶ
- メソッドの定義の方法は通常の関数と同じ ※第1引数にselfを追加する必要があることに注意
class MenuItem: def info(self): print('メニューの名前と値段が表示されます') menu_item1 = MenuItem() menu_item1.name = 'サンドイッチ' menu_item1.price = 500 menu_item1.info()
self
class MenuItem: def info(self): print(self.name+': ¥'+str(self.price)) menu_item1 = MenuItem() menu_item1.name = 'サンドイッチ' menu_item1.price = 500 menu_item1.info()
インスタントメソッドに引数を入れる
おもろいね。menu_item1.get_total_price(4)の引数「4」って第2引数に行くんだね。もともと第1にselfが入ってるから。おもろ〜
class MenuItem: def info(self): return self.name + ': ¥' + str(self.price) def get_total_price(self,count): total_price=self.price*count return total_price menu_item1 = MenuItem() menu_item1.name = 'サンドイッチ' menu_item1.price = 500 print(menu_item1.info()) result=menu_item1.get_total_price(4) print('合計は'+str(result)+'円です')
インスタントメソッドに引数を入れる その2
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 return total_price menu_item1 = MenuItem('サンドイッチ',500) print(menu_item1.info()) result = menu_item1.get_total_price(4) print('合計は' + str(result) + '円です')
別のファイルのメソッドをモジュール名書かずに使える
なんか書き方に違和感が。注意しよ・・。
from menu_item import MenuItem menu_item1 = MenuItem('サンドイッチ', 500) #後略
総合演習
例のごとく、inputをintし忘れて「あれ?あれ?」ってなった
#script.py from menu_item import MenuItem menu_item1 = MenuItem('サンドイッチ', 500) menu_item2 = MenuItem('チョコケーキ', 400) menu_item3 = MenuItem('コーヒー', 300) menu_item4 = MenuItem('オレンジジュース', 200) menu_items = [menu_item1, menu_item2, menu_item3, menu_item4] index = 0 for item in menu_items: print(str(index) + '. ' + item.info()) index += 1 print('--------------------') order = int(input('メニューの番号を入力してください: ')) selected_menu = menu_items[order] print('選択されたメニュー: ' + selected_menu.name) count=int(input('個数を入力してください(3つ以上で1割引): ')) result=selected_menu.get_total_price(count) print('合計は'+ str(result)+'円です')
#menu_item.py 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)