class 생성
- class 이름은 User
- 생성자 함수 (__init__) 유저 정보 이름 , 휴대폰 번호, 생년월일
- info() 함수 생성 유저의 정보를 출력(print)하는 함수 생성
-test : user1=user("test,","01012341234","880101"),
user2=user("test,","01078292012","900101")
class User():
# 새로운 클래스를 생성하는 경우에 클래스 안에 변수들을 지정
def __init__(self,_name,_phone,_birth):
self.name = _name
self.phone = _phone
self.birth = _birth
# 유저의 정보를 출력하는 함수
def info(self) :
self.result = [self.name,self.phone,self.birth]
print(self.result)
user = User("test,","01012341234","880101")
user2 = User("test2,","01078292012","900101")
지갑 클래스 생성
- 클래스의 이름은 Wallet
- 클래스 생성자 함수 소유자,지갑 브랜드, 지갑의 가치, 잔액
- 잔액은 0
- work() 함수 생성 : 일의 종류는 'TM', 'alba', 'serving'
'TM'은 잔액이 500증가 'alba'는 잔액이 300증가 ,
serving은 400증가
- buy()함수 생성 : 'dinner'의 경우 잔액 100 감소, 'notebook'의 경우 1000감소
'monitor'의 걍우 400 감소 -->
구매 실패의 조건 --> 구매하려는 제품의 가격보다 잔액이 적은경우는 구매 실패 메시지를 출력
- wallet_info() 함수 생성 : 현재 소유자의 이름과 잔액을 출력
class Wallet(User):
# 생성자 함수 소유자, 브랜드, 가치, 잔액
def __init__(self, _name, _phone, _birth, _brand, _value):
super().__init__(_name, _phone, _birth)
self.brand = _brand
self.value = _value
self.balance = 0
# 일을 한다는 행동을 하는 함수
def work(self, _work_type):
if _work_type == "TM":
self.cost = 50000
elif _work_type == "alba":
self.cost = 30000
elif _work_type == "serving":
self.cost = 40000
else :
return "work_type이 맞지 않습니다."
self.balance += self.cost
return f"{_work_type} 일을 성공하였습니다. 현재 잔액은 {self.balance}입니다."
# 구매를 하는 함수
def buy(self, _goods):
if _goods == "dinner":
self.cost = 100
elif _goods == "notebook":
self.cost = 1000
elif _goods == "moniter":
self.cost = 400
else :
return "구매 상품의 종류가 존재하지 않습니다."
if self.balance >= self.cost:
self.balance -= self.cost
return f"{_goods} 상품 구매가 완료되었습니다. 현재 잔액은 {self.balance}"
else :
return f"{_goods} 상품 구매가 실패하였습니다."
# 식당 정보를 가지고 구매를 하는 함수
def diner_buy(self, _name, _menu):
# cost를 출력
# _name는 Diner() 클래스
# _menu는 해당하는 클래스의 메뉴의 이름(키값)
self.cost = _name.menu_price(_menu)
if self.cost == 0 :
return "메뉴가 존재하지 않습니다."
elif self.balance >= self.cost:
self.balance -= self.cost
return f"{_menu}를 구매하였습니다."
else :
return f"{_menu} 구매가 실패하였습니다."
# 지갑의 정보를 출력하는 함수
def wallet_info(self):
print(f"지갑의 소유자는 {self.name}")
print(f"현재 잔액은 {self.balance}")
# 오버라이딩 -> info()라는 함수가 하는 행동을 변경해서 사용
def info(self):
print(f"소유자의 이름은 {self.name}")
print(f"지갑의 브랜드는 {self.brand}")
print(f"지갑의 가치는 {self.value}")
Wallet_1 = Wallet("test","01041441414","970918","gucci",2000)
Wallet_1.work("TM")
Wallet_1.work("alba")
Wallet_1.work("serving")
#'serving 일을 성공하였습니다. 현재 잔액은 120000입니다.'
Wallet_1.wallet_info()
#지갑의 소유자는 test
#현재 잔액은 120000
Wallet_1.buy('notebook')
#'notebook 상품 구매가 완료되었습니다. 현재 잔액은 119000'
## 소유자의 정보만 확인
# -> 클래스 상속받아서 오버라이딩
Wallet_1.info()
식당 class 생성
- class 이름은 Diner
- 생성자 함수 연락처, 메뉴 (dict데이터를 생성 키값에는 메뉴이름 , value에는 가격) -> 메뉴는 비어있는 dict데이터 생성
- 기존의 메뉴가 존재하면 추가하지 않는다. -> 메뉴를 추가하는 함수 (menu_add()) -> 메뉴의 이름과 메뉴의 가격 추가
- 메뉴를 삭제하는 함수(menu_del()) -> 메뉴를 삭제
- 지정한 메뉴의 가격을 return(menu_price()) -> 선택한 메뉴의 가격을 리턴
class Diner:
def __init__(self, _tel, _menu={}):
self.tel = _tel
# self.menu = dict()
self.menu = _menu
# 메뉴 추가
def menu_add(self, _name, _price):
# self.menu에 추가하려는 key 값이 없는 경우
if _name not in self.menu:
self.menu[_name] = _price
print(f"{_name} 메뉴가 추가되었습니다.")
else:
print(f"{_name} 메뉴가 존재합니다.")
# 메뉴 삭제
def menu_del(self, _name):
if _name in self.menu:
del self.menu[_name]
print(f"{_name} 메뉴가 삭제되었습니다.")
else :
print(f"{_name} 메뉴가 존재하지 않습니다.")
# 선택한 메뉴의 가격을 return
def menu_price(self, _name):
if _name in self.menu:
return self.menu[_name]
else :
print(f"{_name} 메뉴가 존재하지 않습니다.")
return 0
샤오바오 = Diner("0212345678")
샤오바오.menu_add("꿔바로우",11000)
샤오바오.menu_add("우육면",10000)
샤오바오.menu_add("볶음면",12000)
샤오바오.menu
샤오바오.menu_del("볶음면")
#볶음면 메뉴가 삭제되었습니다.
샤오바오.menu_price("우육면")
#10000
샤오바오.menu_price("볶음면")
#볶음면 메뉴가 존재하지 않습니다.
# 가격 0
## Wallet_1 클래스 안에 샤오바오 클래스를 넣어 함수를 실행
Wallet_1.diner_buy(샤오바오,'볶음면')
#'볶음면를 구매하였습니다.'
Wallet_1.wallet_info()
#지갑의 소유자는 test
#현재 잔액은 107000