クラスという概念

クラスを使う場面

同じ要素が何個も出てくるページ(記事一覧ページ等)

流れ

①設計図(クラス)を定義する

②空のインスタンスを生成する

③空のインスタンスに情報を与える

④インスタンスに対してメソッドを使う

# ① 設計図(クラス)を定義する
class MenuItem: # クラス名は必ず大文字から始めること
  def food(self): # クラスの中で定義した関数のことをメソッドと呼ぶ。メソッドは第1引数にselfを追加する必要がある
    print(self.name) # selfにはmenu_item1が代入されるため、self.nameはcoffeeとなる

# ② 空のインスタンスを生成する
menu_item1 = MenuItem()

# ③ 空のインスタンスに情報を与える
menu_item1.name = "coffee"

# ④ インスタンスに対してメソッドを使う
menu_item1.food()  # このようにインスタンスに対してメソッドを使うことからfood(self)はインスタンスメソッドとも呼ばれる
# ---> coffee

__init__メソッド

空のインスタンスが生成された直後に必ず呼び出される(=実行される)メソッド

class MenuItem:
  def __init__(self, name):
    print('空のインスタンスが生成されました')
    self.name = name

menu_item1 = MenuItem('orange juice')
print(menu_item1.name) # --->orange juice

クラスのインポート

コードが長くなったとき、クラスの定義だけを別のファイルに記述すれば、コードが読みやすくなる

sub.py

class MenuItem:
  def __init__(self, name, price):
      print('空のインスタンスが生成されました')
      self.name = name
      self.price = price
  def info(self):
      result = self.name + 'の値段は' + str(self.price)
      return result

main.py

from sub import MenuItem # from モジュール名 import クラス名

menu_item1 = MenuItem('coffee', 500)
menu_item2 = MenuItem('cake', 800)
menu_item3 = MenuItem('egg', 100)
menu_items = [menu_item1, menu_item2, menu_item3]

for menu_item in menu_items:
  print( menu_item.info() )