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
'Programming > Python' 카테고리의 다른 글
[01. Python] 014. 정규 표현식(Regular Expressions) (0) | 2020.01.03 |
---|---|
[01. Python] 013. 예외처리 (0) | 2020.01.02 |
[01. Python] 011. 함수 (0) | 2019.12.30 |
[01. Python] 010. 제어문 – while (0) | 2019.12.29 |
[01. Python] 009. 제어문 – for (0) | 2019.12.29 |