2012-09-27 7 views
12

저는 Python에 새로운 있습니다. 오류가 발생했습니다.TypeError : 'bool'객체를 호출 할 수 없습니다.

while not cls.isFilled(row,col,myMap): 
TypeError: 'bool' object is not callable 

이 문제를 해결하는 방법을 알려주십시오. 첫 번째 "if"점검은 정상이지만 "not"에이 오류가 있습니다.

def main(cls, args): 
     ... 
     if cls.isFilled(row,col,myMap): 
      numCycles = 0 

     while not cls.isFilled(row,col,myMap): 
      numCycles += 1 


def isFilled(cls,row,col,myMap): 
     cls.isFilled = True 
     ## for-while 
     i = 0 
     while i < row: 
      ## for-while 
      j = 0 
      while j < col: 
       if not myMap[i][j].getIsActive(): 
        cls.isFilled = False 
       j += 1 
      i += 1 
     return cls.isFilled 
+5

누군가 Flask-Login으로 비슷한 오류가 발생하면 : 'current_user.is_authenticated() : TypeError :'bool '객체를 호출 할 수 없습니다. [이 질문에 대한 답변] (http://stackoverflow.com/q/32750526/1429387)). – naXa

답변

38

당신은 cls.isFilled = True입니다. 그러면 isFilled이라는 메서드를 덮어 쓰고 True 값으로 바꿉니다. 그 방법은 이제 사라졌고 더 이상 호출 할 수 없습니다. 그래서 다시 호출하려고하면 오류가 발생합니다. 더 이상 존재하지 않기 때문입니다.

해결 방법은 메서드에 대해 수행하는 것과 다른 변수 이름을 사용합니다.

0

사실 당신은 다음 단계로 문제를 해결할 수 있습니다 -

  1. cls.__dict__
  2. 이 당신에게 {'isFilled':True} 또는 {'isFilled':False} 사용자가 설정 한 내용에 따라이 포함됩니다 사전 형식으로 출력을 줄 것이다 마십시오.
  3. 이 항목 삭제 - del cls.__dict__['isFilled']
  4. 이제 방법을 호출 할 수 있습니다.

이 경우 BrenBarn에서 언급 한 방법보다 우선 적용되는 항목을 삭제합니다.

관련 문제