Python

Python 문법 기초 25 - class 포함관계(2)

코딩탕탕 2022. 10. 22. 17:02

 

예제2)

# 냉장고에 음식 담기 - 클래스의 포함관계로 구현

class Fridge:
    isOpened = False
    foods = [] # list type으로 담기
    
    def open(self):
        self.isOpened = True
        print('냉장고 문 열기')
        
    def put(self, thing):
        if self.isOpened:
            self.foods.append(thing) # 포함
            print('냉장고 안에 음식을 저장함')
            self.food_list()
        else:
            print('냉장고 문이 닫혀 있어 음식을 저장할 수 없어요')
    
    def close(self):
        self.isOpened = False
        print('냉장고 문 닫기')
        
    def food_list(self):
        for f in self.foods:
            print('-', f.irum, f.expiry_date)
        print()
        
        
class FoodData:
    def __init__(self, irum, expiry_date):
        self.irum = irum
        self.expiry_date = expiry_date
        
if __name__ == '__main__':
    f = Fridge()
    
    apple = FoodData('사과', '2022-10-15')
    f.put(apple)
    f.open()
    f.put(apple)
    f.close()
    print()
    cider = FoodData('칠성사이다', '2023-10-25')
    f.open()
    f.put(cider)
    f.close()


<console>
냉장고 문이 닫혀 있어 음식을 저장할 수 없어요
냉장고 문 열기
냉장고 안에 음식을 저장함
- 사과 2022-10-15

냉장고 문 닫기

냉장고 문 열기
냉장고 안에 음식을 저장함
- 사과 2022-10-15
- 칠성사이다 2023-10-25

냉장고 문 닫기

 

로또 뽑기

# 크래스의 포함관계 : 로또번호 출력하기

import random

class LottoBall:
    def __init__(self, num):
        self.num = num
        
class LottoMachine:
    def __init__(self):
        self.ballList = []
        for i in range(1, 46):
            self.ballList.append(LottoBall(i)) # 포함관계
            
    def selectBalls(self):
        # 볼 섞기 전 출력
        for a in range(45):
            print(self.ballList[a].num, end = ' ')
        # 볼 섞은 후 출력
        random.shuffle(self.ballList) # 섞기
        print()
        for a in range(45):
            print(self.ballList[a].num, end = ' ')
            
        return self.ballList[0:6]
            
class LottoUi:
    def __init__(self):
        self.machine = LottoMachine() # 포함관계
        
    def playLotto(self):
        input('로또를 시작하려면 엔터키를 누르세요')
        selectedBalls = self.machine.selectBalls()
        print('\n당첨 번호')
        for ball in selectedBalls:
            print('%d '%ball.num, end = ' ')
        
if __name__ == '__main__':
    # lo = LottoUi()
    # lo.playLotto()
    LottoUi().playLotto()


<console>
로또를 시작하려면 엔터키를 누르세요
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 
37 14 12 3 32 27 9 10 36 40 42 5 26 38 17 31 1 11 8 15 25 21 35 28 18 23 33 2 39 43 24 20 45 29 4 34 6 30 22 19 44 7 16 13 41 
당첨 번호
37  14  12  3  32  27