TypeError: объект "bool" не может быть вызван
Я новичок в python. Я получил ошибку
while not cls.isFilled(row,col,myMap):
TypeError: 'bool' object is not callable
Не могли бы вы объяснить, как решить эту проблему?
Первая проверка "если" в порядке, но "while 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
Ответы
Ответ 1
Вы выполняете cls.isFilled = True
. Это перезаписывает метод под названием isFilled
и заменяет его значением True. Этот метод теперь ушел, и вы больше не можете его вызывать. Поэтому, когда вы пытаетесь вызвать его снова, вы получаете сообщение об ошибке, так как его больше нет.
В решении используется другое имя для переменной, чем для метода.
Ответ 2
На самом деле вы можете исправить его следующими шагами -
- Do
cls.__dict__
- Это даст вам формат словарного формата, который будет содержать
{'isFilled':True}
или {'isFilled':False}
в зависимости от того, что вы установили.
- Удалить эту запись -
del cls.__dict__['isFilled']
- Теперь вы сможете вызвать метод.
В этом случае мы удаляем запись, которая переопределяет метод, упомянутый BrenBarn.