티스토리 뷰

클래스에는 __init__() 메소드가 있습니다. 이를 생성자(Constructor) 라고 부르는데요, 사용자가 따로 호출하지 않아도 클래스 객체를 생성할 때 자동으로 호출이 되는 부분입니다. 객체를 생성할 때는 이 생성자의 전달값에 해당하는 갯수만큼 값을 던져줘야 합니다. 단, self 부분은 제외하고 말이죠.

 

앞 장에서 만든 코드를 다시 가져와보겠습니다.

__init__() 생성자 부분을 보면 self 를 제외하고 name, hp, damage 를 전달받고 있으며 아래에서 유닛을 생성할 때는 각각 3개씩 값을 던져주고 있습니다.

class Unit:
    def __init__(self, name, hp, damage): # 3개의 전달값
        self.name = name
        self.hp = hp
        self.damage = damage
        print("{0} 유닛이 생성되었습니다.".format(self.name))
        print("체력 {0}, 공격력 {1}".format(self.hp, self.damage))

marine1 = Unit("마린", 40, 5)
marine2 = Unit("마린", 40, 5)
tank = Unit("탱크", 150, 35)

만약 전달값을 3개가 아닌 1개 또는 2개만 넘기면 어떻게 될까요?

marine3 = Unit("마린") # 전달값 3개 중 1개만 넘김

 

새로운 마린을 만드려고 시도할 떄 전달값을 1개만 넘기니, 다음과 같은 에러메시지가 뜨면서 hp 와 damage 에 해당하는 2개 전달값이 없다고 하네요.

TypeError: __init__() missing 2 required positional arguments: 'hp' and 'damage'

 

이번에는 전달값을 2개만 넘겨보겠습니다.

marine3 = Unit("마린", 40) # 전달값 3개 중 2개만 넘김

역시나 동일한 형태의 에러메시지가 뜨면서 damage 에 해당하는 1개 전달값이 없다고 합니다.

TypeError: __init__() missing 1 required positional argument: 'damage'

 

이와 같이 클래스 객체를 생성할 때는 __init__() 생성자에 정의된 self 를 제외한 갯수만큼 전달값을 넘겨주어야 합니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함