더북(TheBook)

개설된 계좌 수(num_acnt)를 클래스 멤버로 만들어 줍니다(#1). 그리고 클래스 멤버를 반환하는 클래스 메서드 get_num_acnt를 정의합니다(#2). __init__() 안에 있는 self.userself.balance는 객체마다 다른 값을 가지는 인스턴스 멤버입니다(#3). 객체를 생성할 때마다 클래스 멤버인 계좌 수를 하나씩 늘려 줍니다(#4). transfer() 메서드는 메시지 패싱을 하는 함수고(#5) __str__() 메서드는 파이썬이 예약한 함수입니다(#6). 객체 obj를 만들고 print(obj)를 실행하면 __str__() 메서드에서 반환된 문자열이 출력됩니다.


코드 6-18 oop1/oop1_2/account.py ②

if __name__= = "__main__":
    # 객체 생성
    my_acnt = Account('greg', 5000)
    your_acnt = Account('john', 1000)

    # 생성 확인
    print('object created')
    print(my_acnt)
    print(your_acnt)
    print()

    # 인스턴스 메서드를 호출하는 방법
    #1. by object
    my_acnt.deposit(500)            #7
    #2. by class
    # Account.deposit(my_acnt, 500) #8

    # deposit 확인
    print('deposit')
    print(my_acnt)
    print()

    # withdraw 함수 사용법
    print('withdraw')
    money = my_acnt.withdraw(1500)
    if money:
        print('withdrawn money : {}'.format(money))
    else:
        print('Not enough to withdraw')
    print()

    # 클래스 멤버에 접근하는 방법
    print('class member')
    #1.by class
    print(Account.num_acnt)
    #2.by object
    #print(my_acnt.num_acnt)
    print()

    # 클래스 메서드를 호출하는 방법
    print('class method')
    #1.by class
    n_acnt = Account.get_num_acnt()
    #2.by object
    #n_acnt = my_acnt.get_num_acnt()

    print('The number of accounts : {}'.format(n_acnt))
    print()

    # 메시지 패싱
    print("message passing")
    print(my_acnt)
    print(your_acnt)
    res = my_acnt.transfer(your_acnt, 2000)
    if res:
        print('transfer succeeded')
    else:
        print('transfer failed')
    print(my_acnt)
    print(your_acnt)
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.