더북(TheBook)

18.7 상속

상속은 기존 클래스를 수정해서 새로운 클래스를 정의하는 기능이다. 예를 들어 플레이어가 쥐고 있는 카드를 표현하기 위해 (hand)이라는 클래스가 필요하다고 해보자. 손은 덱과 비슷하다. 둘 다 카드들로 구성되고, 카드를 추가하거나 제거하는 작업이 필요하다.

손은 덱과는 다른 부분도 있다. 손을 위한 연산이 덱을 위한 연산이 아니기 때문이다. 예를 들어 포커에서 누가 이겼는지 알아보기 위해 두 손에 든 카드를 비교해야 할 것이다. 브릿지 게임에서는 비딩(bidding, 이기기 위해 획득해야 하는 점수 계산)하기 위해 손에 든 카드의 점수를 계산해야 할 것이다.

비슷하지만 다른 부분이 있는 클래스 사이의 이러한 관계가 상속에 적합하다. 기존 클래스를 상속해서 새로운 클래스를 정의하려면 괄호 안에 기존 클래스의 이름을 넣으면 된다.

class Hand(Deck):

"""카드를 플레이하는 손을 표현한 클래스"""

이 정의는 HandDeck을 상속한다는 것을 나타낸다. 즉, Deck에서와 마찬가지로 Hand에서도 pop_card, add_card 같은 메서드를 사용할 수 있다는 뜻이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.