본문 바로가기

Programming/Python Tutorials

[PYTHON 3] Tutorials 28. Init - 초기화


이번 시간에는 지난 시간에 다룬 클래스에서 초기화(initialization)에 대해 알아보고자 합니다. 파이썬에서 초기화란 클래스를 만들고, 객체가 클래스의 함수(메소드)에 접근을 할 때 아무런 함수(메소드)를 실행하지 않아도 처음부터 객체 생성과 동시에 실행되는 값들을 의미 합니다. 가령, 사람으로 치자면 처음부터 타고 나는것들이 해당이 되겠는데, 머리, 몸, 다리, 팔 등등... 이는 누구나 가지고 태어나듯이 객체가 생성됨과 동시에 가지고 있게 되는 것들을 일컬어 초기화 혹은 __init__ 으로 명명합니다. 역시 말보다는 예제를 통해서 보는게 훨씬 이해가 잘 되겠죠.. 시작해 보겠습니다.

사람(Person)이라는 클래스를 정의해 보겠습니다.

사람의 초기값을 설정해주기 위해 아래와 같이 __init__(self) 를 작성합니다. 여기서 주의할 점은 언더바( _ ) 가 연속 2개라는 점입니다. _ _ init _ _  이렇게 말이죠. 물론 중간에 공백은 없애야 합니다.

사람이라면 출생 때 부터 가지고 나오는 것들 중 손, 발만 초기화 해 주었습니다.

그리고 수영하는 함수(메소드)를 정의 하여 주었습니다.

수영이라는 것을 수행 할 때 실행할 내용이 많겠지만, 간략히 아래와 같이 출력만 하게 하였습니다.

'lucy' 라고 하는 객체를 생성해 주었고, 이렇게 생성된 'lucy'에게 수영을 시켜보았습니다. lucy.swin()

'lucy'에게 수영만 시켰는데, 팔이 2개다, 다리가 2개다. 까지 함께 수행을 하고 있네요. 이는 처음에 언급하였듯이 객채가 생성되면 자동으로 실행하게 하는 __init__ 때문입니다.

그렇다면 이번에는 롤플레잉 게임에 많이 등장하는 아쳐(궁수)라는 캐릭터를 만들어보겠습니다.(물론 저는 RPG를 하지 않... 아니 할 줄 모릅니다...;;). 초기값으로는 amount 를 전달받게 하였는데, 이는 아래의 그림에 나올 energy로 전달할 값입니다.

전달 받은 amount 를 처음에 가지고 있을 에너지 값에 할당해 줍니다. RPG에서 각 캐릭터가 가지고 있는 생명력(에너지) 수치라고 생각하면 될 듯 합니다.

이번에는 현재 에너지가 얼마나 남아 있는지 확인하는 함수(메소드)를 정의 하겠습니다.

단순히 현재 에너지량만 출력하게 하였습니다.

그리고 chris , ellena 라고 하는 객체(사용자)에게 궁수 캐릭터(클래스)를 생성하게 하였습니다. 이 때, 각각의 객체가 가지는 초기 에너지 레벨을 달리 하였습니다. 잘은 모르지만, RPG 에서 레벨에 따른 에너지량을 달리 할 수 있는 것도 이와 같은 설정 때문입니다.

그리고 각각의 객체가 가지고 있는 현재의 에너지량을 확인하게 하였습니다.

실행을 해보니, 각각의 객체가 현재 가지고 있는 에너지량이 잘 표기되고 있네요. 

이와 같이 객체가 클래스의 값에 접근할 때 처음부터 가지고 있는 혹은 처음부터 실행하는 코드가 존재하는데 이를 정의해 주는 부분이 __init__ 에서 해주는 부분입니다. 다른 언어에서도 객체 지향이라면 대동소이 하다고 할 수 있습니다. 약간의 표기상의 차이와 야~악간의 문법적인 차이만 존재할 뿐입니다.