class

jh_k·2023년 2월 5일
0

class 생성

  1. class 이름은 User
  2. 생성자 함수 (__init__) 유저 정보 이름 , 휴대폰 번호, 생년월일
  3. 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")

지갑 클래스 생성

  1. 클래스의 이름은 Wallet
  2. 클래스 생성자 함수 소유자,지갑 브랜드, 지갑의 가치, 잔액
  3. 잔액은 0
  4. work() 함수 생성 : 일의 종류는 'TM', 'alba', 'serving'
    'TM'은 잔액이 500증가 'alba'는 잔액이 300증가 ,
    serving은 400증가
  5. buy()함수 생성 : 'dinner'의 경우 잔액 100 감소, 'notebook'의 경우 1000감소
    'monitor'의 걍우 400 감소 -->
    구매 실패의 조건 --> 구매하려는 제품의 가격보다 잔액이 적은경우는 구매 실패 메시지를 출력
  6. 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 생성

  1. class 이름은 Diner
  2. 생성자 함수 연락처, 메뉴 (dict데이터를 생성 키값에는 메뉴이름 , value에는 가격) -> 메뉴는 비어있는 dict데이터 생성
  3. 기존의 메뉴가 존재하면 추가하지 않는다. -> 메뉴를 추가하는 함수 (menu_add()) -> 메뉴의 이름과 메뉴의 가격 추가
  4. 메뉴를 삭제하는 함수(menu_del()) -> 메뉴를 삭제
  5. 지정한 메뉴의 가격을 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
profile
Just Enjoy Yourself

0개의 댓글