hi() 메서드에서 self 뒤에 매개변수 name을 추가했습니다. 매개변수가 여러 개일 때는 항상 self를 가장 먼저 적어야 합니다. 메서드가 호출될 때 객체를 가장 먼저 전달하기 때문입니다. 매개변수 name을 추가했으므로 hi()를 호출할 때 name에 해당하는 인자를 넣어야 합니다. 인자로 각 캐릭터 이름을 넣고 메서드를 호출하니 오류 없이 출력됩니다. 단, name은 메서드 내부에서만 사용 가능한 지역변수이므로 hi() 메서드 외부에서는 사용할 수 없습니다.
▲ 그림 14-6 메서드에 매개변수가 여럿일 때
이번에는 공격하기 기능인 attack() 메서드를 추가로 작성해 봅시다. 공격할 대상을 매개변수 target으로 전달받아 ‘000 을/를 공격합니다!’를 출력해 보겠습니다.
class Character:
def hi(self, name):
print('안녕! 난', name)
def attack(self, target):
print(target, '을/를 공격합니다.')
swordsman = Character()
swordsman.hi('검술사')
swordsman.attack('도적')
swordsman.attack('요정')
실행결과
안녕! 난 검술사
도적 을/를 공격합니다.
요정 을/를 공격합니다.
attack() 메서드는 hi() 메서드와 형식이 비슷합니다. self를 첫 번째 매개변수로 작성해서 자동으로 전달되는 객체를 담습니다. 그리고 추가한 매개변수 target으로 공격 대상의 이름을 전달받아 메서드 내부의 print()를 실행합니다.