식당에서 메뉴를 보여주고 삭제하는 기능을 클래스로 구현해보자.
#오후시간 시작
#class 정리
#클래스 : 메뉴(메뉴 보여주기, 메뉴추가, 삭제), 상점()
class Menu:
def __init__(self):
self.menus = dict() #menus라는 딕셔너리를 하나 생성함.
def add_menu(self, name, price): #메뉴를 추가하는 기능
if name in self.menus.keys(): #self.menus라는 딕셔너리의 키들을 name이라는 변수로 받아서
print("이미 있는 메뉴입니다.") #add_menu로 받은 이름이랑 겹치면 이미 있다고 출력
else:
self.menus[name] = price #그렇지 않으면 받은 이름과 가격을 추가해준다는 코드
def delete_menu(self, name):
del self.menus[name] #delete_menu통해 받은 것을 삭제해줌.
def show_menus(self):
print("우리 메뉴")
for name, price in self.menus.items(): #.items()라는 함수를 통해서 내 딕셔너리에 있는
print(f"{name}: {price}") #키와 값들을 한번에 불러와서 조회
menu = Menu() #인스턴스 하나 만든다음 (실제로 생성된 객체)
menu.add_menu('돌체라떼', 5000)
menu.add_menu('라떼', 4500)
menu.add_menu('케이크', 10000)
menu.menus
menu.show_menus()
menu.delete_menu('라떼')
menu.show_menus()
코랩환경에서 작동 잘한다.
이것을 가지고 Shop이라는 클래스를 새로 만들어서 연동할 수 있다.
현재 마지막 코드인 menu.show_menus()를 작동하면
우리메뉴
돌체라떼: 5000
케이크: 10000
이 세 줄이 출력된다.
class Shop:
def __init__(self, menus, shop_name, address):
self.shop_name = shop_name
self.address = address
self.menus = menus
def show_shop_menus(self):
print("월클서비스 제공하겠습니다.")
self.menus.show_menus()
shop = Shop(menu, '멋사카페', '스페인')
shop.show_shop_menus()
이렇게 코드를 실행하면, shop이라는 인스턴스 안에 현재 내가 갖고있는 돌체라떼와 케이크라는 메뉴가 담겨있는 그 menu라는 인스턴스를 넘겨준다. 추가로 shop_name과 address라는 변수에 해당하는 것들도 넘겨줌.
그리고나서 Shop이라는 클래스 안의 show_shop_menus()함수를 호출해주면, 그 안에 있던놈이 위에있는 Menu라는 클래스 안의 함수인 show_menus()를 호출해줘서 현재 우리 메뉴안에 있는 데이터를 출력해준다.