이전 포스팅까지 파이썬 클래스를 이용한 사칙연산 클래스를 생성해 봤습니다.
이번에는 클래스의 상속이라는 개념을 적용하여 기존에 만든 사칙연산 클래스에 기능을 추가해 제곱을 계산하는 클래스를 만들어 보도록 하겠습니다.
파이썬 클래스
사칙연산 클래스의 상속
클래스의 상속에서 상속(Inheritance)의 의미는 물려받다 라는 의미 입니다.
재산 상속 할 때의 상속과 같은 의미입니다.
클래스에서도 이 상속이라는 개념이 있습니다.
클래스를 만들고 다른 어떤 클래스의 기능을 물려 받을 수 있게 만드는 것이 바로 클래스의 상속입니다.
이제 기존에 만든 Four_Calculator 클래스에 클래스의 상속이라는 개념을 적용하여 a 와 b 의 제곱을 구하는 기능을 추가해 보도록 하겠습니다.
다음처럼 Four_Calculator 클래스를 상속하는 More_Four_Calculator 클래스를 만들어 보겠습니다.
>>> class More_Four_Calculator(Four_Calculator):
... pass
...
>>>
위 코드 처럼 클래스를 상속하려면 클래스 이름 뒤 괄호 속에 상속할 클래스 이름을 넣어주면 됩니다.
class 클래스 이름(상속할 클래스 이름)
More_Four_Calculator 클래스는 Four_Calculator 클래스를 상속했으므로 Four_Calculator 클래스의 모든 기능을 사용할 수 있습니다.
>>> a = More_Four_Calculator(4, 2)
>>> a.add()
6
>>> a.multi()
8
>>> a.subtrack()
2
>>> a.divide()
2.0
>>>
위처럼 상속받은 Four_Calculator 클래스의 모든 기능을 사용할 수 있음을 확인 할 수 있습니다.
클래스의 상속을 하는 이유
그럼 클래스의 상속을 하는 이유는 무엇일까요?
클래스의 상속은 보통 기존 클래스를 변경하지 않고 기능을 추가하거나
기존에 있던 기능을 변경하고자 할 때 주로 사용됩니다.
그럼 기존 클래스에 기능을 추가하고자 한다면 기존 클래스를 수정을 하면 되는데
왜 상속을 받아서 처리를 할까요?
만약 기존 클래스가 라이브러리 형태로 제공되거나 수정이 허용되지 않는 상황이라면
클래스의 상속을 통해서 이를 해결할 수가 있습니다.
제곱을 계산하는 클래스 More_Four_Calculator 만들기
이제 a 와 b 의 제곱을 계산하는 클래스 More_Four_Calculator 를 생성해 보겠습니다.
>>> class More_Four_Calculator(Four_Calculator):
... def squared(self):
... result = self.first ** self.second
... return result
...
>>>
앞서 작성했던 제곱을 계산하는 클래스 More_Four_Calculator 의 pass 문장을 제거하고 입력받은 두 수의 제곱을 구할 수 있는 squared 라는 메서드를 추가해 봤습니다.
이제 squared 메서드를 실행해 보겠습니다
>>> a = More_Four_Calculator(4, 2)
>>> a.squared()
16
>>> a.add()
6
제곱을 계산하는 클래스 More_Four_Calculator 로 만든 a 객체에 4 와 2 라는 숫자를 입력한 후 squared 메서드를 호출했습니다.
결과는 숫자 4 의 2 제곱 인 16 을 리턴하는 것을 확인 할 수 있습니다.
add 라는 메서드 역시 상속받은 대로 정상 동작하는 것을 확인 할 수 있습니다.
클래스의 상속은 제곱을 계산하는 클래스 More_Four_Calculator 처럼 기존에 있는 클래스(Four_Calculator) 는 그대로 유지한 채로 클래스의 기능을 확장 시킬 때 주로 사용하게 됩니다.
- 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.
