2012-09-27 22 views
12

Soy totalmente nuevo en python. Obtuve un errorTypeError: el objeto 'bool' no se puede llamar

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

¿Podría indicarnos cómo solucionar este problema? La primera comprobación "si" está bien, pero "mientras no" tiene este error.

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

Si alguien obtiene un error similar con Flask-Login: 'current_user.is_authenticated(): TypeError: el objeto 'bool' no se puede llamar' se refiere a [esta pregunta] (http://stackoverflow.com/q/32750526/1429387) – naXa

Respuesta

38

Hace cls.isFilled = True. Eso sobrescribe el método llamado isFilled y lo reemplaza con el valor True. Ese método ahora se ha ido y ya no puedes llamarlo más. Entonces, cuando intentas volver a llamar, obtienes un error, ya que ya no está allí.

La solución es usar un nombre diferente para la variable que para el método.

0

En realidad se puede arreglar con los pasos siguientes -

  1. Haz cls.__dict__
  2. esto le dará salida de formato de diccionario que contendrá {'isFilled':True} o {'isFilled':False} dependiendo de lo que haya establecido.
  3. Eliminar esta entrada - del cls.__dict__['isFilled']
  4. Podrá llamar al método ahora.

En este caso, eliminamos la entrada que anula el método mencionado por BrenBarn.

Cuestiones relacionadas