더북(TheBook)

9.2.1 생성자: __init__( )

Unit 클래스에 __init__() 메서드를 정의했습니다. 파이썬에서는 이를 생성자(constructor)라고 합니다. 생성자는 사용자가 따로 호출하지 않아도 객체를 생성할 때 자동으로 호출되는 메서드입니다. 클래스를 만들 때 __init__이라는 이름으로 메서드를 정의하면 자동으로 생성자가 됩니다. 객체를 생성할 때 생성자가 자동으로 호출되므로 생성자의 전달값 개수만큼 값을 전달해야 합니다. 단, self는 기본으로 포함하므로 제외합니다. 객체 생성을 함수 호출과 비교하면 이해하기 쉬울 겁니다.

Unit 클래스의 코드를 다시 살펴보겠습니다. __init__() 생성자 부분을 보면 self를 제외하고 name, hp, damage를 전달값으로 받습니다. 그리고 유닛, 즉 객체를 생성할 때는 값을 3개씩 전달하고요.

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

soldier1 = Unit("보병", 40, 5) # 객체 생성
soldier2 = Unit("보병", 40, 5) # 객체 생성
tank = Unit("탱크", 150, 35) # 객체 생성
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.