# 01_classTest03.py

# 계산기
# 계산기 A : 3 + 4 = 7
# 계산기 B : 5 + 15 = 20

# step1 : 클래스(템플릿) 정의
# step2 : 객체 생성
# step3 : 변수에 값을 할당하거나, 메소드 호출 등을 사용함
# step4 : 출력이나 다른 용도로 사용

# 클래스 구성 요소 : 변수, 함수, 생성자(__init)

# self 키워드 : 호출하고 있는 객체의 정보가 복사되는 변수, 클래스 내부에서 함수의 첫 번째 매개 변소로 사용되어야 한다.
class Calculator : #step 1 클래스 정의
    def __init__(self, data):   # __init__ 생성자 : 내부에 들어 있는 변수들의 초기화 용도 (한번만 호출이 되는 특수한 매소드!)
        self.result = 0
        self.data = data
        print(self.data + '계산기가 생성되었습니다.')
        print('계산기 초기 값 : ', self.result)

    def calc(self, num):        # 함수(calc)는 동작
        self.result += num
        return  self.result
# step2 객체 생성 : 해당 클래스를 이용하여 물건 생성
# Calculator는 생성자가 된다.
# 규칙 : 생성자의 이름은 클래스의 이름과 동일해야 한다.
cal1 = Calculator('계산기 A')  #   '계산기 A' = 매개 변수로 부름
#step 3
print(cal1.calc(3))
print(cal1.calc(4))
print(cal1.calc(4))
print('-' * 30)

cal2 = Calculator('계산기 B')
print(cal2.calc(5))
print(cal2.calc(15))
print('-' * 30)

print('finished')