파이썬 우주선게임 코드분석[1-2] 상속, super, 생성자에 관하여

이정민·2021년 4월 27일
0

코딩 초보라서 그런지 모르는게 너무 많은거 같다....

<script>

class Fighter(pygame.sprite.Sprite):
	def __init__(self):
    	super(Fighter, self).__init__()
        self.image = pygame.image.load('fighter.png')
        self.rect = self.image.get_rect()
        self.rect.x = int(WINDOW_WIDTH / 2)
        self.rect.y = WINDOW_HEIGHT - self.rect.height
        self.dx = 0
        self.dy = 0
        
</script>

여기서 class Fighter는 pygame.sprite.Sprite라는 상위 클래스를 상속받는다.
그리고 super를 통해서 상위 클래스의 생성자를 받아온다.
그런데 상위 생성자를 보면 매개변수가 없다.

상속에 관하여 설명하는 유튜브영상들을 보면 매개변수가 항상 있어서 그런지 이상해보였다.
그럼 받아오는게 없는건지 궁금해서 비주얼 스튜디오에서 마우스 오른쪽 키를 누르면 나오는
Peek -> Peek Definition을 통해서 알아보았다.

<script>

from operator import truth

import pygame

from pygame.rect import Rect
from pygame.time import get_ticks
from pygame.mask import from_surface

class Sprite(object):
	def __ini__(self, *groups):
    	self.__g = {}
        if groups:
        	self.add(*groups)
    
    def add(self, *groups):
    	has = self.__g.__contains__
        for group in group:
        	if hasattr(group, '_spritegroup'):
            	if not has(group):
                group.add_internal(self)
                self.add_internal(group)
            else:
            	self.add(*group)
    
    def remove(self, *groups): 등등 너무 많다.

</script>

Sprite는 또 상위 클래스인 object를 상속 받고 생성자에는 *groups라는 가변매개변수가 있다.

그럼 앞에서 말한 상위클래스Sprite를 상속받은 이유가 뭔지 궁금하다.
Sprite를 이용하기 위해서 상속받은건데 무엇을 이용하기 위한건지 잘 모르겠다.
self.image.get_rect()를 이용하려고 상속받은 것일까??
self.image.get_rect()등을 통하여 변수를 초기화시켜주는 역할로 이용하는것 같은데
확실하지 않은것 같다...

나중에 새롭게 알게 되면 글을 수정해야겠다...

profile
안녕하세요.

0개의 댓글