나는 톡톡레몬

반응형

앞서 파이썬 함수와 모듈을 배웠습니다. (아래 글 참조부탁드립니다.) 함수와 모듈의 목적은 파이썬에서 코딩을 간소화 하고 효율화 하기 위함입니다. 그럼에도 불구하고 긴 코드를 작성하게 되면 반복사용하게 되는 코드들이 많다고 합니다. 지속적으로 길어지는 코드를 어떻게 하면 효율적으로 작성하고 반복사용을 할까를 고민하다가 개발자들은 객체의 개념을 생각해 냅니다.

 

 

 

[파이썬 독학하기] 함수 알아보기

파이썬 독학하기! 이번에는 함수에 대해 알아보도록 하겠습니다. 함수란 무엇인가!? 학창 시절에 한창 수학을 배울때 우리는 y=f(x) 라는 수식을 많이 보았습니다. x 라는 변수를 넣으면 여러가지 정의되어있는..

lemontalktalk.tistory.com

 

 

[파이썬 독학하기] 모듈 알아보기

이번 파이썬 독학하기 포스팅에서는 모듈을 알아보고자 합니다. 모듈이란 무엇인가? 앞서 우리는 함수에 대해 알아보았습니다. 원하는 기능을 하는 명령어 덩어리들을 함수라고 지칭하였는데, 모듈은 이보다 한단..

lemontalktalk.tistory.com

 

객체의 개념은 무엇인가?

 

 

파이썬에서 객체라 하면 붕어빵과 붕어빵 틀을 생각하면 됩니다. 붕어빵 틀(곧 언급하겠지만 class라 부릅니다.) 에서 만들어낸 붕어빵을 파이썬에서는 객체(instance)라고 합니다. 즉 파이썬 내에서 코딩을 효율적으로 하기 위해 여러가지 코딩을 모아 원하는 출력물을 뽑을 수 있는 틀을 만들어 붕어빵 찍듯이 객체를 팍팍 찍어내는 것입니다.

 

바로 예시로 살펴보겠습니다. 붕어빵 틀은 파이썬에서 'class' 라고 지칭합니다. class 안에는 만들어질 결과물의 특징(필드)와 행동(method)에 대한 설명이 코딩됩니다. 

 

새로 시작한 RPG 게임에서 캐릭터를 생성하는 상황을 가정해보죠. 7행에 game_charater 라는 틀(class)를 만들어 줍니다. 그리고 그 game_charater의 특징(필드)를 기술해줘야겠죠. HP와 SP를 8행 9행에 코딩해주었습니다. 그리고 이 game_charater의 행동인 skill 도 10행에 지정해 주었습니다. 여기까지하면 game_charater 라는 틀(class) 코딩은 완료된 것입니다. (지정해주는 형태는 위 예시를 참고해주세요!) 

 

 

이제 새로 만든 틀을 가지고 결과물 (객체 / instance) 을 만들어 봐야겠죠. game_charater의 한 직업인 magician을 만들어 봅시다. magician 이라는 객체(instance)를 만드려면 13행처럼 코딩해주시면 됩니다. magician 이라는 객체는 game_charater class를 통해서 만들어졌기 때문에 class에서 지정한 특징 항목과 행동 항목을 그대로 따오게 됩니다. 때문에 magician 이라는 객체는 현재 HP / SP 라는 특징(필드)를 갖고 있고 skill 이라는 행동(method)를 하죠.

 

직업이 magician 이니 특징(필드)도 수정해 줘야할것 같습니다. 파이썬에서는 만들어진 객체의 특징(필드)를 수정할 수 있습니다. 14행과 15행 처럼 magician 의 특징(필드)도 수정해 줍니다. 그리고 19행 20행처럼 HP와 SP를 출력해보면 변경된 값으로 출력됨을 확인 할 수 있습니다.

 

16행에서는 magician.skill() 이라고 코딩이 되어있는데 어디서 많이 본 형태입니다. 바로 list와 관련된 함수들에서 'list.xxxx()' 형태를 가진 함수들과 같은 형태입니다. 앞서 game_charater class에서 def 을 통해 skill 이라는 함수를 정의해 줬고 magician 이라는 객체는 game_charater 라는 class를 통해 만들어 졌기 때문에 game_charater의 행동 항목을 그대로 따라갑니다. 때문에 16행의 결과물은 '몸빵' 이란 출력이 되는것이죠.  

 

 

그런데 매번 game_charater라는 class를 통해 다양한 직군의 캐릭터를 수정해주기는 복잡합니다. 게임 캐릭터 직업에는 전사, 마법사, 힐러등 다양한 특징과 행동을 가진 직업군이 많기 때문입니다. 때문에 기본적인 게임 캐릭터 틀인 game_charater class에서 다양한 직군에 맞는 class를 파생시켜줘야합니다. 이를 파이썬에선 상속이라고 합니다.

 

힐러 직군의 class를 만드는 것을 예시로 들어보죠. 파이썬에서 A 라는 class의 특징과 행동 항목을 그대로 B 라는 class로 상속시키는 코드은 24행과 같습니다. 이제 healer라는 class는 기본적으로 HP, SP라는 특징(필드)와 skill 이라는 행동(method)를 갖습니다.

 

그런데 healer는 HP가 좀 약하고 SP가 높다는 특징이 있습니다. 그러므로 특징 값을 변경해 줘야합니다. 25,26행에서 변경해줍니다. 마찬가지로 healer는 skill이 있지만 기존에 설정된 '몸빵' 이 아닙니다. healer의 스킬은 '치료' 이므로 27~28행처럼 치료로 변경해줍니다. 

 

그럼 또 하나의 직업군인 healer의 class 가 만들어졌습니다. 잘 적용되었는지 확인해보기 위해 game_charater class를 이용한 ID인 no_job 과 healer class를 이용한 heal_ddak 이라는 ID를 만들어봅니다 (30~31행) 그리고 각각 HP라는 특성을 출력해보고 skill 이라는 행동(method) 를 실행해봅니다. (33~38)

 

동일한 HP 특성을 실행했고 skill 이라는 함수를 실행했지만, 각기 다른 class에서 만들어진 ID에서 각기 다른 값이 출력됨을 확인할 수 있습니다. 

 

만일 이를 하나하나 코딩하여 나열하려 했다면 똑같은 작업에 일부 수치만 변경하여 여러번 반복했어야하는데 만들어진 class를 조금씩 수정하면 class를 통해 무수히 많은 서로다른 결과값을 찍어낼 수 있게 되는 셈 입니다.

 

 이상 파이썬 객체의 개념에 대해 알아보았습니다. 도움되셨으면 좋겠습니다. 감사합니다 ^_^  

반응형

이 글을 공유합시다

facebook twitter googleplus kakaostory naver