더북(TheBook)

2.10.4 self

robot1이라는 객체를 만들어 fly() 함수를 사용해 보았습니다. 그런데 코드를 잘 살펴보면 이상한 점이 있습니다.

앞서 함수를 설명할 때 매개변수를 선언해 두고 호출할 때 매개변수를 전달하지 않으면 안 된다고 설명했습니다. 그런데 fly() 함수를 호출하는 robot1.fly() 코드에는 함수의 매개변수인 self를 전달하지 않았지만 아무 문제가 되지 않았습니다. 클래스 내에 함수들은 기본적으로 self라는 키워드를 첫 번째 매개변수로 사용하도록 되어 있고, 함수를 호출할 때 자동으로 전달되기 때문에 프로그래머가 따로 전달하지 않아도 아무 문제없습니다(엄밀히 말해서 클래스 내 함수들이 반드시 매개변수로 self를 사용해야 하는 것은 아니지만, 처음 배우는 입장에서는 거의 대부분 그렇게 사용한다고 생각해도 좋습니다).

그러면 self란 무엇이길래 클래스 내 함수의 첫 번째 매개변수로 등장할까요? self란 클래스의 생성 객체를 가리키는 키워드 변수입니다. 먼저 앞서 만든 Robot 클래스를 이용하여 robot1robot2 개체를 만들어 보겠습니다.

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