IT is Smart

파이썬 Class 구현하기, define and use class 본문

Programming/Python Basic

파이썬 Class 구현하기, define and use class

달인최선 2016. 9. 10. 14:54
반응형


이번에는 파이썬으로 Class를 정의하고 Class 개체를 생성해서 사용하는 방법을 알아보겠습니다.

class Enemy:
    life = 3
    
    def attack(self):
        print("ouch!")
        self.life -=1
    
    def checkLife(self):
        if self.life <= 0:
            print("I am dead")
        else:
            print(str(self.life) + " life left")

enemy1 = Enemy()
enemy2 = Enemy()

enemy1.attack()
enemy1.attack()
enemy1.checkLife()
enemy2.checkLife()

Enemy라는 이름의 class를 정의했습니다.

life라는 내부변수를 선언했고, 초기값으로 3을 할당했습니다.


attack이라는 함수를 정의했습니다. 함수 단독으로 선언할 경우에는 매개변수 없이도 선언할 수 있었지만, class의 메소드로써 함수를 정의할 경우에는 반드시 최소 1개의 인수(파라메터, 매개변수)를 선언해줘야 하고 첫번째 인수는 class 자기 자신을 의미하는 'self'로 선언해야 합니다. attack함수가 호출되면 "ooch!"라고 출력하고 life변수의 값을 -1해주도록 구현되었습니다. 

a -= 1a = a - 1과 같은 의미입니다. 마찬가지로 a += 1a = a + 1과 같은 의미입니다.


또 checkLife함수를 정의했습니다. 이 함수는 내부변수인 life의 값이 0보다 작으면 "I and dead"를 출력하고 0보다 크면 현재 값을 출력하도록 구현되었습니다.


Enemy는 이렇게 life변수, attack()메소드와 checkLife() 메소드를 가진 Class로 정의가 된 것입니다.


enemy1과 enemy2는 동일하게 Enemy Class의 Instance입니다. Class가 설계도라면 Instance를 그 설계도 대로 만들어진 개별의 실제 건물인 것입니다. 사람라는 것이 모든 사람들의 공통점을 정의한 실체가 없는 개념(설계도)이라면 홍길동이나 이몽룡은 그 실체인 것과 같습니다.


그래서, enemy1과 enemy2는 처음 생성되었을 때의 life는 똑같이 3이지만, attack메소드를 실행하면 각각의 life값이 달라지는 것입니다.


이것으로 Class와 Instance의 관계에 대한 간략한 설명을 마치겠습니다.


여기까지 입니다~


--------------------
Source Code from thenewboston Tutorials
좋은 코드는 볼수록 Insight를 주고, 반복할수록 내 것과 같이 된다.



반응형