더북(TheBook)

9.2.2 인스턴스 변수

메서드에 정의한 변수를 인스턴스 변수라고 하며 self와 함께 사용한다고 했습니다. Unit 클래스에서는 name, hp, damage가 인스턴스 변수이고, self.name과 같은 형식으로 전달값을 받아 정의합니다.

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

새로운 유닛을 하나 만들어 보겠습니다. 이번에 만들 유닛은 공중을 날아다니는 유닛인 전투기입니다. 전투기는 은폐라는 특수한 기능이 있어서 이 기능을 쓰면 상대방이 볼 수 없습니다. 하지만 은폐는 그냥 쓸 수 없고 게임에서 통용되는 재화를 지불해서 업그레이드해야 사용할 수 있습니다.

공중 유닛 생성은 지금까지와 동일한 방식으로 하는데, 이번에는 클래스 밖에서 인스턴스 변수 정보를 출력해 보겠습니다. 클래스 안에서는 self.으로 인스턴스 변수에 접근할 수 있었는데, 클래스 밖에서는 객체로 접근합니다. 객체로 접근할 때는 객체명 뒤에 점(.)을 찍고 인스턴스 변수명을 적으면 됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.