logo

Het repareren van het ‘list’-object is niet opvraagbaar in Python

Een lijst is ook een object dat wordt gebruikt om elementen van verschillende gegevenstypen op te slaan. Het is gebruikelijk dat de fout ‘list’-object niet opvraagbaar is tijdens het gebruik van de lijst in onze Python-programma’s. In dit artikel zullen we leren waarom deze fout optreedt en hoe u deze kunt oplossen.

Wat betekent het dat het ‘lijst’-object niet opvraagbaar is in Python?

De ‘list’-object kan niet worden opgevraagd error is een veel voorkomende runtime-fout die Python-ontwikkelaars tegenkomen. Het treedt op wanneer u een lijstobject probeert aan te roepen alsof het een functie is. In Python zijn lijsten objecten die een geordende verzameling items bevatten. Ze zijn toegankelijk via indexering of segmentering, en niet door ze als functies aan te roepen.



Syntaxis

 ''list' object is not callable'>

Hieronder staan ​​de redenen waarom het Python ‘list’-object niet kan worden opgeroepen Python :

  • Variabele naam Conflicten met functie.
  • Misbruik van haakjes
  • Methode botst met Eigenschap.

Variabelenaam conflicteert met functie.

In de onderstaande code wordt lijst toegewezen als een variabelenaam, wat in strijd is met de ingebouwde functie lijst() . Om dit op te lossen, hernoemt u de variabele of opent u expliciet de lijst() functie van de ingebouwde module.



Python3
# Create a list list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # Create a list of quantity moreNumbers = list(range(10,21)) # Print the list and quantity print(list) print(moreNumbers)>

Uitvoer

Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 4, in moreNumbers = list(range(10,21)) TypeError: 'list' object is not callable>

Misbruik van haakjes

In onderstaande code wordt misbruik gemaakt van haakjes in plaats van vierkante haken voor lijstindexering, waardoor een ‘ lijst ‘object is geen opvraagbare fout.

Python3
items = ['Pencil', 'Eraser', 'Gel Pen', 'Ruler'] print(items(3))>

Uitvoer



Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 3, in print(items(3)) TypeError: 'list' object is not callable>

Methode botst met Eigenschap.

In het onderstaande voorbeeld treedt de fout op vanwege een naamgevingsconflict tussen de methode merken() en de eigendomsmerken. Hier heeft de klasse Student een attribuutmarkeringen, die aanvankelijk worden toegewezen als een lijst met de cijfers van de student. De klasse definieert echter ook een methode, merken() , die dezelfde lijst met cijfers retourneert.

Python3
class Student: def __init__(self, name, marks): self.name = name self.marks = marks def marks(self): return self.marks student = Student('Lalit', [95, 67, 81, 64, 87]) # Generates the error print(student.marks())>

Uitvoer

Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 11, in print(student.marks()) TypeError: 'list' object is not callable>

Oplossing voor Python ‘list’-object kan niet worden opgevraagd in Python

Hieronder vindt u de benaderingen om het Python ‘list’-object op te lossen dat niet kan worden opgeroepen in Python

  • Juiste variabelenaam
  • Correct gebruik van haakjes
  • Hernoem de Conflict-methode en het attribuut

Juiste variabelenaam

I Hernoem de variabele in de onderstaande oplossing lijst om schaduw van ingebouwde functienamen te voorkomen. Gebruik vierkante haakjes voor indexering in plaats van haakjes om toegang te krijgen tot elementen in de lijst. Druk beide lijsten af ​​om de inhoud ervan weer te geven.

Python3
# Create a list one2nine = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # Create a list of quantity moreNumbers = list(range(10,21)) # Print the list and quantity print(one2nine) print(moreNumbers)>

Uitvoer
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]>

Correct gebruik van haakjes

Om toegang te krijgen tot een lijstitem, gebruikt u altijd vierkante haakjes, zoals gebruikt in de onderstaande code.

Python3
items = ['Pencil', 'Eraser', 'Gel Pen', 'Ruler'] print(items[3])>

Uitvoer
Ruler>

Hernoem de Conflict-methode en het attribuut

Door de eigenschap te hernoemen naar merken en de methode daarvoor get_marks() , zullen we het naamconflict elimineren en daarvoor zorgen student.get_marks() haalt de lijst met cijfers op zonder de TypeError tegen te komen.

machinetaal
Python3
class Student: def __init__(self, name, marks): self.name = name # Change the property name to _marks self._marks = marks # Rename the method to get_marks def get_marks(self): return self._marks student = Student('Lalit', [95, 67, 81, 64, 87]) # Outputs the list of marks print(student.get_marks())>

Uitvoer
[95, 67, 81, 64, 87]>