logo

Com arreglar l'objecte 'llista' no es pot cridar a Python

Una llista també és un objecte que s'utilitza per emmagatzemar elements de diferents tipus de dades. És habitual veure que l'objecte 'llista' d'error no es pot cridar mentre s'utilitza la llista als nostres programes Python. En aquest article, aprendrem per què es produeix aquest error i com resoldre'l.

Què vol dir que l'objecte 'llista' no es pot cridar a Python?

El L'objecte 'llista' no es pot cridar error és un error d'execució comú que troben els desenvolupadors de Python. Es produeix quan intenteu cridar un objecte de llista com si fos una funció. A Python, les llistes són objectes que contenen una col·lecció ordenada d'elements. S'hi accedeix mitjançant la indexació o el tall, no cridant-los com a funcions.



proves de regressió en proves de programari

Sintaxi

 ''list' object is not callable'>

A continuació, es mostren els motius pels quals l'objecte 'llista' de Python no es pot cridar Python :

  • Nom de la variable Conflictes amb la funció.
  • Ús incorrecte dels parèntesis
  • El mètode entra en conflicte amb la propietat.

Conflictes de nom de variable amb funció.

Al codi següent, la llista s'assigna com a nom de variable, en conflicte amb la funció integrada llista () . Per resoldre-ho, canvieu el nom de la variable o accediu explícitament al fitxer funció list(). des del mòdul integrat.



Python 3
# 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)>

Sortida

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

Ús incorrecte dels parèntesis

Al codi següent Ús incorrecte dels parèntesis en lloc dels claudàtors per a la indexació de llistes, provocant un ' llista 'L'objecte no és un error invocable.

què és l'ordinador
Python 3
items = ['Pencil', 'Eraser', 'Gel Pen', 'Ruler'] print(items(3))>

Sortida



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

El mètode entra en conflicte amb la propietat.

A l'exemple següent, l'error es produeix a causa d'un conflicte de noms entre el mètode marques () i les marques de propietat. Aquí, la classe Estudiant té un atribut de notes, que s'assigna inicialment com una llista que conté les notes de l'estudiant. Tanmateix, la classe també defineix un mètode, marques () , que retorna la mateixa llista de notes.

python o
Python 3
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())>

Sortida

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

Solució per L'objecte 'llista' de Python no es pot cridar a Python

A continuació, es mostren els enfocaments per resoldre l'objecte 'llista' de Python que no es pot cridar a Python

  • Nom correcte de la variable
  • Ús correcte dels parèntesis
  • Canvia el nom del mètode de conflicte i de l'atribut

Nom correcte de la variable

jo a la solució següent canvieu el nom de la variable llista per evitar ombrejar els noms de les funcions integrades. Utilitzeu claudàtors per indexar en comptes de parèntesis per accedir als elements de la llista. Imprimiu ambdues llistes per mostrar-ne el contingut.

Python 3
# 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)>

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

Ús correcte dels parèntesis

Per accedir a un element de la llista, utilitzeu sempre claudàtors, tal com s'utilitza al codi següent.

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

Sortida
Ruler>

Canvia el nom del mètode de conflicte i de l'atribut

En canviar el nom de la propietat a marques i el mètode per get_marks() , eliminarem el conflicte de denominació, garantint-ho student.get_marks() recupera la llista de marques sense trobar el TypeError.

Python 3
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())>

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