クラスという概念
クラスを使う場面
同じ要素が何個も出てくるページ(記事一覧ページ等)
流れ
①設計図(クラス)を定義する
②空のインスタンスを生成する
③空のインスタンスに情報を与える
④インスタンスに対してメソッドを使う
# ① 設計図(クラス)を定義する
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() )