더북(TheBook)

9.2.3 메서드

메서드는 클래스 내부에 정의한 함수로, 클래스 안에 여러 개를 만들 수 있습니다. 메서드가 일반 함수와 다른 점은 전달값 부분에 첫 번째로 self를 넣는다는 점, 메서드 안에서 self.으로 인스턴스 변수에 접근할 수 있다는 점입니다.

게임에는 공격할 수 있는 유닛과 공격할 수 없는 유닛이 있습니다. 이번에는 공격할 수 있는 유닛만을 위한 새로운 클래스를 정의해 보겠습니다. 이름은 AttackUnit이라고 짓습니다. AttackUnitUnit 클래스와 동일하게 __init__() 생성자에서 name, hp, damage 인스턴스 변수를 정의하는데, print() 문으로 출력하는 내용은 따로 없습니다.

class AttackUnit: # 공격 유닛
    def __init__(self, name, hp, damage):
        self.name = name
        self.hp = hp
        self.damage = damage

공격 유닛인 만큼 공격 명령을 내리면 공격하는 동작, 적군으로부터 공격받으면 피해를 입는 동작 등을 정의해야 합니다. 먼저 공격 동작을 위한 메서드를 만들겠습니다. 메서드명은 attack으로 하고 전달값에는 기본적으로 넣어야 하는 self와 공격 방향을 의미하는 location을 넣습니다.

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