Подтвердить что ты не робот

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
4b9b3361

Ответ 1

Вы выполняете cls.isFilled = True. Это перезаписывает метод под названием isFilled и заменяет его значением True. Этот метод теперь ушел, и вы больше не можете его вызывать. Поэтому, когда вы пытаетесь вызвать его снова, вы получаете сообщение об ошибке, так как его больше нет.

В решении используется другое имя для переменной, чем для метода.

Ответ 2

На самом деле вы можете исправить его следующими шагами -

  • Do cls.__dict__
  • Это даст вам формат словарного формата, который будет содержать {'isFilled':True} или {'isFilled':False} в зависимости от того, что вы установили.
  • Удалить эту запись - del cls.__dict__['isFilled']
  • Теперь вы сможете вызвать метод.

В этом случае мы удаляем запись, которая переопределяет метод, упомянутый BrenBarn.