이번 시간에는 앞 시간에서 다룬 클래스의 상속을 확장한 다중 상속에 대해 알아보려고 합니다. 하나의 클래스가 2개 이상의 서로다른 역할을 하는 클래스를 상속받아 그 기능을 온전히 수행하게끔 하는데 그 목적이 있고, 그러면 그 활용성 또한 증대될 것이기 때문입니다.
롤플레잉 게임을 한다고 가정하고, 그 중 한 캐릭터를 Archer(궁수)라고 할 때, 이 캐릭에 해당하는 클래스를 정의하였습니다. 그 중 움직임을 담당하는 함수를 move 라고 하고 정의하였습니다.▼
게임내 아이템들이 많을텐데, 어떤 아이템을 획득 했을시에 레벨업을 가정하고 Item 이라는 클래스를 정의하였습니다. 그 중 아이템 획득에 관한 함수 eat_item 을 정의하였습니다.▼
위의 두 개의 서로 다른 클래스를 상속 받게 할 경우에는 아래 그림처럼 클래스명(상속받을 클래스, 상속받을 클래스....) 이렇게 정의하면 됩니다. 그리고 아래에서 상속받은 LevelupArcher 클래스에서 함수를 추가할 수 있는데, 그렇지 않고 아무런 함수를 추가 하지 않을 때는 pass 를 반드시 넣어 주어야 합니다. 만약 함수의 추가가 없으니 비워도 되겠지...라고 생각하면, 파이썬에서는 syntax error가 발생하게 됩니다. ▼
객체 lvarc 가 클래스 LevelupArcher 의 속성으로 생성되게 하였고, 객체 lvarc를 움직이게 하고, 아이템을 먹게 하였습니다. 상속도 잘 되었고, 그 역할도 잘 하고 있는것이 확인되네요.▼
만약 앞서 언급한 부분에서 상속받은 클래스에 함수 추가없이 'pass' 를 넣지 않을 경우 아래와 같은 오류가 발생하게 됩니다. 여기서는 IndentationError 라고 인식을 하는군요. Indentation(들여쓰기)
실제로 프로그래밍을 할 경우에 이 다중 상속을 활용한 코딩을 많이 하게 됩니다. 기본적인 개념만 익힌후에 연습을 하다보면 자연스레 인지하게 될 것입니다. 수고 하셨습니다.
'Programming > Python Tutorials' 카테고리의 다른 글
[PYTHON 3] Tutorials 32. Make words counters - 1 ( words counter 만들기) (0) | 2015.12.07 |
---|---|
[PYTHON 3] Tutorials 31. Threading - 파이썬의 쓰레딩 (8) | 2015.12.05 |
[PYTHON 3] Tutorials 29. Inheritance - 파이썬의 클래스 상속 (2) | 2015.12.04 |
[PYTHON 3] Tutorials 28. Init - 초기화 (1) | 2015.12.03 |
[PYTHON 3] Tutorials 27. Classes and Objects - 클래스, 객체 (3) | 2015.12.03 |