• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

TypeError: 'bool' object is not callable 오류

21.01.29 05:19 작성 조회수 5.63k

0

코드 진행 중에 오류가 떴습니다. 

강의를 보면서 따라했는데 뜨는 이유를 잘 모르겠습니다. 

메소드와 변수의 이름이 같을 때 나타난다고 하는데, 잘 모르겠습니다.

답변 1

답변을 작성해보세요.

0

김경민님의 프로필

김경민

2021.03.22

안녕하세요!

질문자님 코드에서 현재 모드를 나타내는 변수는 set_seize_mode 입니다.

(강의에서 같은 역할을 하는 변수는 앞에 set_이 안붙은 seize_mode 입니다.)

또한 시즈모드 on/off 를 해주는 메서드 또한 같은 이름을 가지고 있습니다.

에러메세지는 'bool object는 Callable이 아니다.' 라고 합니다.

'callable이 아니라는데그럼 callable은 무엇일까'

함수처럼 뒤에 괄호를 붙여 호출할 수 있는 형태 라고 생각하시면 됩니다.

143번째 줄의 set_seize_mode의 클래스 정의를 따라 들어가보면

클래스의 인스턴스(값을 가지는 객체 하나하나)가 생성될 때 호출되는

__init__ 메서드에서 set_seize_mode 변수에 False 값을 넣어줬습니다. 

이로 인해 클래스에서 만들어준 함수 이름으로 알지 못하고

생성 시 값을 넣어준 bool 타입 변수로 인식하는 것입니다. 

코드 흐름상 unit.set_seize_mode() 는 True(), False() 처럼 해석될 것이고,

문법상 bool 타입값을 대상으로 호출 할 수 없다는 에러메세지가 나오는 것입니다.