더북(TheBook)

메서드 정의하고 사용하기

메서드는 클래스 내부에 정의된 사용자 정의 함수입니다. 함수는 미리 정의된 기능을 수행하죠. 13장의 plus(a, b)는 두 수를 전달받아 더하는 기능을, gugudan()은 구구단 문제를 출제하는 기능을 수행합니다. 메서드 역시 함수이므로 함수처럼 미리 정의하고 호출되면 해당 기능을 수행합니다.

현재 Character 클래스에는 인사하는 기능인 hi() 메서드가 있습니다. 따라서 swordsman, fairy, thief 객체도 hi() 메서드를 사용할 수 있습니다. swordsman 객체가 인사한다고 해 봅시다. 그럼 swordsmanhi()를 실행해야 합니다. 객체가 메서드를 실행(호출)하는 방법은 객체명.메서드()입니다. 따라서 swordsman.hi()로 작성하면 됩니다. 한번 실행해 봅시다.

swordsman.hi()
실행결과
----> 1 swordsman.hi()
TypeError: hi() takes 0 positional arguments but 1 was given

메서드를 호출한 swordsman.hi()에서 오류가 발생합니다. 오류 내용에는 ‘hi()는 위치 인자가 0개인데, 1개가 주어졌다’고 나옵니다. 이게 무슨 뜻일까요?

hi() 메서드를 정의할 때 매개변수를 넣지 않았습니다. 전달받을 것이 없기 때문이죠. 그런데 오류 내용에서는 인자 1개를 넣어 호출했다고 나옵니다. 코드에서도 swordsman.hi()로 인자 없이 호출했는데 말이죠. 이 부분이 바로 사용자 정의 함수와 메서드의 다른 점입니다.

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