더북(TheBook)

Note ≡


클래스 내 함수를 선언할 때 매개변수로 self를 전달하지 않아도 된다고 잠깐 언급한 적이 있습니다. 하지만 실제로 다음과 같이 코드를 작성하고 실행해 보면 에러가 발생합니다.

> class Robot:
>     def fly():
>         print("날아갑니다.")
>
> robot1 = Robot()
> robot1.fly()
(...)
TypeError: fly() takes 0 positional arguments but 1 was given

에러가 발생하는 이유는 robot1.fly()를 호출할 때 자동으로 self를 매개변수로 전달하는데, 함수를 정의할 때는 아무런 매개변수를 지정하지 않았기 때문입니다.

이 경우 fly 함수는 매개변수 self가 필요 없는 함수라는 표시가 필요하며, 다음과 같이 @staticmethod를 함수명 위에 붙여 주면 됩니다.

> class Robot:
>     @staticmethod
>     def fly():
>         print("날아갑니다.")
>
> robot1 = Robot()
> robot1.fly()
날아갑니다.
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.