SOCO

클래스 응용 본문

백/python

클래스 응용

ssooda 2021. 7. 9. 21:29
class Account :
    account_count = 0 #클래스 변수 ==> 모든 객체가 공유함
    
    def __init__(self, name, rest) :
        #해당 객체의 이름, 잔고
        self.name = name #self는 객체를 의미함
        self.rest = rest
        
        #해당 객체의 계좌번호
        num1 = random.randint(0,999)
        num2 = random.randint(0,99)
        num3 = random.randint(0,999999)

        num1 = str(num1).zfill(3)
        num2 = str(num2).zfill(2)
        num3 = str(num3).zfill(6) 
        
        self.account = "{}-{}-{}".format(num1,num2,num3)
        self.bank = "SC은행" #매개변수로 전달받지는 않지만 해당 객체 고유의 변수
        
        #해당 객체의 입금 횟수
        self.deposit_count = 0

        #해당 객체의 입금내역리스트
        self.deposit_list = []

        #해당 객체의 출금내역리스트
        self.withdraw_list = [] 

        #이 클래스의 생성횟수
        Account.account_count +=1 
        #개별 객체가 아니라 전체 클래스의 account_count변수를 증가시키는 거임
    
    @classmethod #클래스메서드
    def get_account_num(cls) :
        print(cls.account_count)
    
    def deposit(self, amount) :
        if amount >=1 :
           self.rest += amount
           self.deposit_list.append(amount)
           
           self.deposit_count +=1
           if self.deposit_count %5 ==0 :
               self.rest = self.rest*1.01

    
    def withdraw(self, amount) :
        if amount < self.rest :
            self.rest -= amount
            self.withdraw_list.append(amount)
    
    def display_info(self) :
        self.rest = format(self.rest, ',')
        print("""
        은행이름 : {}
        예금주 : {}
        계좌번호 : {}
        잔고 : {}
        """ .format(self.bank, self.name, self.account, self.rest))

    def deposit_history(self) :
        print(self.deposit_list)
        for i in self.deposit_list :
            print(i)
    
    def withdraw_history(self) :
        print(self.withdraw_list)
        for i in self.withdraw_list :
            print(i)