메서드에는 유의해야 할 점이 있습니다. 메서드를 객체명.메서드()로 호출할 때 메서드 앞에 붙은 객체명이 자동으로 메서드의 인자로 전달됩니다. 즉, swordsman.hi()를 하면 자동으로 swordsman 객체가 hi()의 인자로 넘어간다는 뜻입니다. 따라서 클래스의 메서드를 정의할 때 자동으로 넘어오는 인자를 받을 매개변수가 필요합니다. 이럴 때 파이썬에서는 self를 사용합니다. self는 메서드를 호출한 객체를 의미하는 아주 중요한 키워드입니다.
class Character:
def hi(self):
print('안녕하세요.')
swordsman = Character()
swordsman.hi()
실행결과
안녕하세요.
메서드에 매개변수로 self를 추가하니 오류가 발생하지 않습니다. self가 자동으로 넘어오는 인자를 받기 때문입니다. self는 ‘자기 자신’이라는 뜻으로, 여기서는 메서드를 호출한 swordsman 객체 자신을 가리킵니다.
TIP 자동으로 전달되는 객체를 받는 매개변수로 self 대신 다른 이름을 사용해도 오류가 발생하지 않습니다. 하지만 파이썬에서는 자기 자신의 객체를 전달받는다는 의미로 self를 관습적으로 사용합니다.