TypeError: object ‘builtin_function_or_method’ kan niet worden onderschreven

ERROR: Uitzondering in Tkinter-callback Traceback (meest recente oproep
laatste): Bestand
“/tools/python/2.7.2/lib/python2.7/lib-tk/Tkinter.py”, regel 1410,
in oproep
return self.func(*args) Bestand “./edit.py”, regel 581, in populate
listb.pop[0] TypeError: ‘builtin_function_or_method’ object is niet onderschrijfbaar

De regel # 581 wordt vertegenwoordigd door de laatste pop-instructie in de bovenstaande code.
run_all is een StringVar.

Waarom krijg ik deze foutmelding en hoe kan ik deze oplossen?


Antwoord 1, autoriteit 100%

Ik denk dat je wilt

listb.pop()[0]

De uitdrukking listb.popis een geldige python-uitdrukking die resulteert in een verwijzing naar de methode pop, maar die methode niet daadwerkelijk aanroept. U moet de haakjes openen en sluiten toevoegen om de methode aan te roepen.


Antwoord 2, autoriteit 50%

Het lijkt erop dat je per ongeluk haakjes hebt getypt in plaats van haakjes.


Antwoord 3, autoriteit 13%

in plaats van listb.pop[0]te schrijven, schrijf

listb.pop()[0]
         ^
         |

Antwoord 4, autoriteit 12%

Je probeert pop te benaderen alsof het een lijst of een tupple is, maar pop is dat niet. Het is een methode.


Antwoord 5, autoriteit 8%

Ik kan niet geloven dat deze thread al zo lang aan de gang is.
Je zou deze foutmelding krijgen als je afgeleid zou worden
en gebruikte [] in plaats van (), althans mijn geval.

Pop is een methode op het lijstgegevenstype,
https://docs.python.org/2/tutorial/ datastructures.html#more-on-lists

Daarom zou je pop niet moeten gebruiken alsof het zelf een lijst is, pop[0].
Het is een methode die een optionele parameter nodig heeft die een index vertegenwoordigt,
zoals Tushar Palawatopmerkte in een van de antwoorden die niet werden goedgekeurd,
de juiste aanpassing die het bovenstaande voorbeeld zal oplossen is:

listb.pop(0)

Als je het niet gelooft, voer dan een voorbeeld uit zoals:

if __name__ == '__main__':
  listb = ["-test"]
  if( listb[0] == "-test"):
    print(listb.pop(0))

Andere aanpassingen zouden ook werken, maar het voelt alsof ze de Python-taal misbruiken. Deze thread moet worden gerepareerd, niet om gebruikers in verwarring te brengen.

Aanvulling,
a.pop() verwijdert en retourneert het laatste item in de lijst.
Als resultaat krijgt a.pop()[0] het eerste teken daarvan
laatste onderdeel. Het lijkt erop dat dit niet is wat het gegeven codefragment is
wil bereiken.


Antwoord 6, autoriteit 6%

Deze fout treedt op wanneer u geen haakjes gebruikt bij de bewerking pop. Schrijf de code op deze manier.

listb.pop(0)

Dit is een geldige python-expressie.


Antwoord 7, autoriteit 2%

Ter info, dit is geen antwoord op de post. Maar het kan toekomstige gebruikers helpen die de foutmelding krijgen met het bericht:

TypeError: object ‘builtin_function_or_method’ kan niet worden onderschreven

In mijn geval gebeurde het vanwege een slechte inspringing.

Alleen het inspringen van de regel code loste het probleem op.


Antwoord 8

Een soortgelijke fout gemaakt, eenvoudig op te lossen:

   TypeError Traceback (most recent call last) <ipython-input-2-1eb12bfdc7db> in <module>
  3 mylist = [10,20,30] ----> 4 arr = np.array[(10,20,30)] 5 d = {'a':10, 'b':20, 'c':30} TypeError: 'builtin_function_or_method' object is not subscriptable

Maar ik had het moeten hebben geschreven als:

arr = np.array([10,20,30])

Zeer fixable, rookie / domme fout.

Other episodes