level_up() 역시 메서드이므로 자동으로 전달되는 객체를 받아 줄 매개변수 self가 필요합니다. 그리고 메서드 내부에서 인스턴스 속성인 self.strength가 20% 증가하도록 1.2를 곱하고, self.attack_damage가 5 증가하도록 5를 더합니다. 클래스 외부에서 객체명을 붙여 level_up()을 실행하면 해당 객체의 인스턴스 속성이 변경됩니다.
메서드의 매개변수로 객체 전달하기
이번에는 한 캐릭터가 다른 캐릭터를 공격해 체력이 감소되는 상황을 구현해 보겠습니다. 객체가 다른 객체를 공격하는 상황입니다.
검술사가 요정을 공격하면 요정의 체력이 감소되어야 합니다. 이때 공격하는 캐릭터의 공격력만큼 상대방 캐릭터의 체력이 감소됩니다. 이를 구현하려면 attack() 메서드에 공격 대상인 객체를 인자로 전달해야 합니다. 공격 대상을 받는 매개변수는 target입니다. 그리고 메서드 내부에서 해당 캐릭터의 체력을 감소시켜야죠. target 자체가 하나의 객체이므로 공격받는 캐릭터의 체력(target.strength)을 공격하는 캐릭터의 공격력(self.attack_damage)만큼 감소시킵니다.