이번 시간에는 지난 시간에 다룬 클래스에서 초기화(initialization)에 대해 알아보고자 합니다. 파이썬에서 초기화란 클래스를 만들고, 객체가 클래스의 함수(메소드)에 접근을 할 때 아무런 함수(메소드)를 실행하지 않아도 처음부터 객체 생성과 동시에 실행되는 값들을 의미 합니다. 가령, 사람으로 치자면 처음부터 타고 나는것들이 해당이 되겠는데, 머리, 몸, 다리, 팔 등등... 이는 누구나 가지고 태어나듯이 객체가 생성됨과 동시에 가지고 있게 되는 것들을 일컬어 초기화 혹은 __init__ 으로 명명합니다. 역시 말보다는 예제를 통해서 보는게 훨씬 이해가 잘 되겠죠.. 시작해 보겠습니다.
사람(Person)이라는 클래스를 정의해 보겠습니다.▼
사람의 초기값을 설정해주기 위해 아래와 같이 __init__(self) 를 작성합니다. 여기서 주의할 점은 언더바( _ ) 가 연속 2개라는 점입니다. _ _ init _ _ 이렇게 말이죠. 물론 중간에 공백은 없애야 합니다.▼
사람이라면 출생 때 부터 가지고 나오는 것들 중 손, 발만 초기화 해 주었습니다.▼
그리고 수영하는 함수(메소드)를 정의 하여 주었습니다.▼
수영이라는 것을 수행 할 때 실행할 내용이 많겠지만, 간략히 아래와 같이 출력만 하게 하였습니다.▼
'lucy' 라고 하는 객체를 생성해 주었고, 이렇게 생성된 'lucy'에게 수영을 시켜보았습니다. lucy.swin()▼
'lucy'에게 수영만 시켰는데, 팔이 2개다, 다리가 2개다. 까지 함께 수행을 하고 있네요. 이는 처음에 언급하였듯이 객채가 생성되면 자동으로 실행하게 하는 __init__ 때문입니다.▼
그렇다면 이번에는 롤플레잉 게임에 많이 등장하는 아쳐(궁수)라는 캐릭터를 만들어보겠습니다.(물론 저는 RPG를 하지 않... 아니 할 줄 모릅니다...;;). 초기값으로는 amount 를 전달받게 하였는데, 이는 아래의 그림에 나올 energy로 전달할 값입니다.▼
전달 받은 amount 를 처음에 가지고 있을 에너지 값에 할당해 줍니다. RPG에서 각 캐릭터가 가지고 있는 생명력(에너지) 수치라고 생각하면 될 듯 합니다.▼
이번에는 현재 에너지가 얼마나 남아 있는지 확인하는 함수(메소드)를 정의 하겠습니다.▼
단순히 현재 에너지량만 출력하게 하였습니다.▼
그리고 chris , ellena 라고 하는 객체(사용자)에게 궁수 캐릭터(클래스)를 생성하게 하였습니다. 이 때, 각각의 객체가 가지는 초기 에너지 레벨을 달리 하였습니다. 잘은 모르지만, RPG 에서 레벨에 따른 에너지량을 달리 할 수 있는 것도 이와 같은 설정 때문입니다.▼
그리고 각각의 객체가 가지고 있는 현재의 에너지량을 확인하게 하였습니다.▼
실행을 해보니, 각각의 객체가 현재 가지고 있는 에너지량이 잘 표기되고 있네요. ▼
이와 같이 객체가 클래스의 값에 접근할 때 처음부터 가지고 있는 혹은 처음부터 실행하는 코드가 존재하는데 이를 정의해 주는 부분이 __init__ 에서 해주는 부분입니다. 다른 언어에서도 객체 지향이라면 대동소이 하다고 할 수 있습니다. 약간의 표기상의 차이와 야~악간의 문법적인 차이만 존재할 뿐입니다.
'Programming > Python Tutorials' 카테고리의 다른 글
[PYTHON 3] Tutorials 30. Multiple Inheritance - 파이썬의 클래스 다중 상속 (0) | 2015.12.04 |
---|---|
[PYTHON 3] Tutorials 29. Inheritance - 파이썬의 클래스 상속 (2) | 2015.12.04 |
[PYTHON 3] Tutorials 27. Classes and Objects - 클래스, 객체 (3) | 2015.12.03 |
[PYTHON 3] Tutorials 26. Exceptions - 예외처리 (0) | 2015.12.03 |
[PYTHON 3] Tutorials 25. 웹 크롤러(like Google) 만들기 2 - How to build a web crawler (41) | 2015.11.30 |