• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

def __init__(self)작성할때

21.02.18 02:12 작성 조회수 97

0

self뒤에 다른 변수들이 올때가 있고 안올때가 있는데 어떤 차이가 있는지 모르겠습니다 ㅜㅜ

답변 1

답변을 작성해보세요.

5

김경민님의 프로필

김경민

2021.03.25

안녕하세요! init 메서드는 객체 생성시 호출되어 초기화를 담당합니다.

강의에서 AttackUnit 경우에는 hp, speed 등 여러 정보들이 self 다음에 들어오는데,

Marine, Tank 등은 self 만 오는 이유가 궁금하신 것 같습니다!

실제로 객체를 만들 때도 m1 = Marine( ) 처럼 생성하구요.

Marine  클래스를 정의할 때 이름 옆 괄호 안에 

AttackUnit 클래스의 이름이 들어있습니다.

class Marine(AttackUnit):

Marine, Tank같은 특정 유닛은

AttackUnit이라는 공통된 특징을 가진 유닛입니다. 마린, 탱크 등은

hp, speed 와 같은 속성을 모두 공통으로 가지게 됩니다.

따라서 hp, speed 등 공통된 정보를 통해 생성하는 AttackUnit 클래스를 상속받고,

(AttackUnit에는 self 이외에 다른 변수들이 있는 이유)

Marine의 init 메서드는 따로 정보를 입력 받을 필요 없이

(self 말고 다른 변수 없이)

상속받은 AttackUnit 클래스의 init 메서드를 호출하며

정보를 넘겨주어 객체 초기화를 합니다. 

Marine의 hp, speed 설정은 모든 Marine들이 같은 값을 가지고,

개별 Marine을 생성할때마다 서로 다른 값을 필요하지 않기 때문입니다.

만약 Marine마다 서로 다른 값, 예를 들어 각각 이름을 붙여줘야한다고 가정한다면,

(marine1, marine2, ...) Marine의 init 메서드에서 따로 입력받아야 할 것입니다.