본문 바로가기

Programming/Python

[01. Python] 012. 클래스

728x90

클래스란 함수의 모음이다. 재사용 가능성이 높은 함수를 같은 성격별로 클래스에 넣으면 코딩을 효율적으로 할 수 있다. 예를 들면 계산기에는 더하기, 빼기, 나누기 등 많은 기능이 있다. 이러한 기능은 계산기마다 동일하며 사람마다 계산기를 1개씩 가지고 있으면 계산기의 기능을 재사용하는 사람이 많은 것이다. 이러한 계산기를 클래스로 만들면 다음과 같다.

 

class Calculator:
 def __init__(self, init):
  self.result = init

 def add(self, num):
  self.result += num

 def sub(self, num):
  self.result -= num

 def mul(self, num):
  self.result *= num

 def div(self, num):
  self.result /= num

a = Calculator(3)
a.add(10)
a.sub(5)
a.mul(2)
a.div(10)

b = Calculator(0)
b.add(5)
b.sub(2)


결과 값
1.6 3

 

__init__ 함수는 생성자이다. 클래스가 생성될 때 같이 실행된다. init값을 초기값으로 받은 것으로 알 수 있다. 초기값이 있는 경우는 클래스를 생성할 때 초기값을 넣어주어야 한다. 그리고 add, sub, mul, div함수 등을 통해 self.result 값에 연산을 계속한다. self는 클래스 객체를 뜻한다. 객체를 함수마다 전달하면서 값을 공유하는 것이다.

 

한 번 만든 계산기 클래스를 수정하기 싫고 새로 업그레이드 된 계산기에 활용하고 싶다면 어떻게 해야할까? 계산기 클래스를 신형 계산기에 상속시키면된다.

 

class Calculator_ex(Calculator):
 def pow(self, num):
  self.result **= num

a = Calculator_ex(3)
a.add(10)
a.sub(5)
a.mul(2)
a.div(10)
a.pow(2)

print(a.result)


결과 값
2.5600000000000005

 

기존 계산기에 pow라는 제곱을 계산해주는 함수를 추가하여 계산기를 업그레이드 했다.

 

만약 기존의 계산기 기능이 마음에 들지 않는다면 어떻게 할까? 상속한 클래스에서 함수를 재정의하면 함수의 오버라이딩이 이루어진다.

 

class Calculator_ex(Calculator):
 def pow(self, num):
  self.result **= num
 def add(self, num):
  self.result += num
  print('수정된 더하기')

a = Calculator_ex(3)
a.add(10)

print(a.result)


결과 값
수정된 더하기
13
728x90