38

我是python的新手。我有一个错误

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

请您指导如何解决这个问题?第一个“if”检查很好,但“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
4

2 回答 2

74

你做cls.isFilled = True。这会覆盖调用的方法isFilled并将其替换为值 True。那个方法现在已经消失了,你不能再调用它了。因此,当您尝试再次调用它时,您会收到一个错误,因为它不再存在。

解决方案是为变量使用与方法不同的名称。

于 2012-09-27T05:01:04.227 回答
0

实际上,您可以通过以下步骤修复它 -

  1. cls.__dict__
  2. 这将为您提供字典格式的输出,该输出将包含{'isFilled':True}{'isFilled':False}取决于您设置的内容。
  3. 删除此条目 -del cls.__dict__['isFilled']
  4. 您现在可以调用该方法。

在这种情况下,我们删除了覆盖 BrenBarn 提到的方法的条目。

于 2018-01-25T07:15:33.593 回答