TypeError:'bool'对象不可调用

时间:2012-09-27 04:56:40

标签: python

我是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

2 个答案:

答案 0 :(得分:44)

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

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

答案 1 :(得分:0)

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

  1. cls.__dict__
  2. 这将为您提供字典格式输出,其中包含{'isFilled':True}{'isFilled':False},具体取决于您设置的内容。
  3. 删除此条目 - del cls.__dict__['isFilled']
  4. 您现在可以调用该方法。
  5. 在这种情况下,我们删除覆盖BrenBarn提到的方法的条目。