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 –
- Doe
cls.__dict__
- Hiermee krijgt u uitvoer in woordenboekindeling die
{'isFilled':True}
of{'isFilled':False}
zal bevatten, afhankelijk van wat u heeft ingesteld. - Verwijder dit item –
del cls.__dict__['isFilled']
- Je kunt de methode nu aanroepen.
In dit geval verwijderen we het item dat de methode overschrijft zoals vermeld door BrenBarn.