본문 바로가기

CODES

파이썬 class

 

코딩을 처음 배우면서 개념으로만 접한 '클래스'는 감이 잘 안왔다. 아빠 클래스와 자식 클래스를 예로 들면서 설명을 해주는데, 정확히 어떨 때 필요하다는 것인지....

얼마 전, ios에서 게임을 다운받았다. 'Inside'라는 게임이였다. 높은 자유도 그리고 굉장히 자연스러운 그래픽 모션으로 하루만에 게임을 다 깼다. 이런 게임을 만드려면 얼마나 걸릴까? 이 게임에서는 주인공이 마주하는 거의 모든 사물들과 인터랙트가 가능하다. 거의 모두 다. 게임을 하는 플레이어는 즐겁겠지만, 이 기능들을 일일히 다 구현한다고 생각해보면 정말인지 아찔하다. 상상하고 싶지 않다. 

이런 경우를 위해 클래스가 존재한다. 일일히 다 적는 대신, 틀을 만드는 거다.

클래스를 만들면, 1) 관련된 객체들을 종목에 따라 정리할 수 있다는 장점과 2) 객체에 필요한 특성과 함수가 반복될 때, 한 번만 적어주면 된다는 장점이 있다. 

 

인사이드 게임에는 거의 모든 물체에 밀기 당기기 기능이 있다.

파이썬 코드로 구현해보면...

# inside 게임

class obj:
    def push(self) : #밀 때 
        print('pushed')
            
    def pull(self) : #당길 때
        print('pulled')
            
class box(obj) :
    '''box'''
    def push(self) : 
        #super는 자식클래스의 변수가 부모 클래스가 갖고 있는 변수와 이름이 같을 때, 오버라이딩을 방지한다
        #클래스의 장점을 보여주는 취지와는 맞지 않지만, super의 기능 소개를 위해 적어두었다.
        super().push()
        
class ball(obj) :
    '''ball'''
    def push(self) :
        print('rolling')

box_in_wood = box()
box_in_wood.push()
box_in_wood.pull()

ball_in_lab = ball()
ball_in_lab.push()
ball_in_lab.pull()

 

'CODES' 카테고리의 다른 글

defaultdict  (0) 2020.03.30
Back Propagation (역전파)  (0) 2020.03.26