BNBのプログラミング勉強記録

ガチのプログラミング初心者が駆け上がっていくブログ

メモ(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)