TypeError: ‘bool’-object kan niet worden aangeroepen

Ik ben helemaal nieuw in python. Ik heb een foutmelding

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

Wilt u alstublieft aangeven hoe u dit probleem kunt oplossen?
De eerste “als” controle is prima, maar “terwijl niet” heeft deze fout.

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

Antwoord 1, autoriteit 100%

Je doet cls.isFilled = True. Dat overschrijft de methode met de naam isFilled en vervangt deze door de waarde True. Die methode is nu weg en je kunt het niet meer noemen. Dus als je het opnieuw probeert te bellen, krijg je een foutmelding, omdat het er niet meer is.

De oplossing is om een ​​andere naam voor de variabele te gebruiken dan voor de methode.


Antwoord 2

Eigenlijk kun je het oplossen met de volgende stappen –

  1. Doe cls.__dict__
  2. Hiermee krijgt u uitvoer in woordenboekindeling die {'isFilled':True} of {'isFilled':False} zal bevatten, afhankelijk van wat u heeft ingesteld.
  3. Verwijder dit item – del cls.__dict__['isFilled']
  4. Je kunt de methode nu aanroepen.

In dit geval verwijderen we het item dat de methode overschrijft zoals vermeld door BrenBarn.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

16 + six =

Other episodes