2013-05-01 2 views
3

저는 파이썬에 상당히 익숙하며 파이 게임으로 게임을 만드는 것에 관한 책을 읽었습니다. 나는이 책에서이 코드 조각을 발견했다. 왜 Sprite.__init__(self)이 필요한지 이해가 안됩니다. 나는이 주석으로 코드를 실행했으며 같은 방식으로 실행됩니다. 이가 왜 사람들이 초기화 부르는 이유__init__의 용도는 무엇입니까?

class Creep(Sprite): 

    def __init__( 
      self, screen, img_filename, init_position, 
      init_direction, speed) 

     Sprite.__init__(self) 

     self.screen = screen 
     self.speed = speed 
     self.base_image = pygame.image.load(img_filename).convert_alpha() 
     self.image = self.base_image 

누구나 어떤 생각을 가지고?

+0

그것은 클래스 객체의 인스턴스의 생성자의 역할을 단지 특별한 방법입니다. (클래스를 생성하는 생성자도 있습니다.) 원하지 않으면 필요하지 않습니다. ''자기''는''이 말'이라고하는 대회 이름 일 뿐이다. 이것을''__init__''와 같은 클래스 메소드는 자신을 참조 할 필요가 있고 첫 번째 인자는 항상''self''가 될 것입니다. 클래스의 static 메서드는 예외입니다. 그러나 당신이 입문과 자기 목적을 이해할 때까지 거기에 가지 못하게하십시오. – CppLearner

+0

'Sprite (self)'는'Sprite .__ init __ (self)'와 똑같은 것을 얻지 만 아직 그렇게 할 인스턴스를 만듭니다. 이 사용법은 결과 인스턴스를 취하지 않고'__init__' 메소드를 호출하기 때문에 조금 이상합니다. – mfitzp

+0

'클래스 크립 (Sprite) :'이 주목합니다 - 현재 클래스에서'super (Creep, self) .__ init __()'을하는 것과 같습니다. – mfitzp

답변

1

이것은 수퍼 클래스 초기화 메소드를 호출합니다. 아마도 Sprite은 서브 클래스에서 필요한 초기화 작업을 수행하며 Python에서는이를 명시 적으로 호출해야합니다.

일반적으로는, 그러나, 당신은 super에 전화를 통해 그것을 할 것입니다 :

super(Creep, self).__init__() 
+0

확인. 나는 무슨 일이 일어나고 있는지 모호한 생각을 가지고 있다고 생각합니다. Creep 클래스는 또한 Sprite 객체의 초기화 호출에 포함 된 특정 변수에 대한 액세스가 필요합니까? 내 말투가 좀 이상하다면 용서해주세요. 프로그래밍에 익숙하지 않습니다. –

관련 문제