Une liste est également un objet utilisé pour stocker des éléments de différents types de données. Il est courant de voir l'erreur « liste » que l'objet n'est pas appelable lors de l'utilisation de la liste dans nos programmes Python. Dans cet article, nous apprendrons pourquoi cette erreur se produit et comment la résoudre.
Qu'est-ce que cela signifie par l'objet « liste » qui n'est pas appelable en Python ?
Le L'objet 'list' n'est pas appelable error est une erreur d'exécution courante rencontrée par les développeurs Python. Cela se produit lorsque vous essayez d'appeler un objet liste comme s'il s'agissait d'une fonction. En Python, les listes sont des objets contenant une collection ordonnée d’éléments. On y accède par indexation ou découpage, et non en les appelant comme des fonctions.
Syntaxe
''list' object is not callable'>
Ci-dessous, vous trouverez les raisons pour lesquelles l'objet « liste » Python n'est pas appelable dans Python :
- Nom de variable Conflits avec la fonction.
- Utilisation abusive des parenthèses
- La méthode entre en conflit avec la propriété.
Le nom de la variable est en conflit avec la fonction.
Dans le code ci-dessous, la liste est attribuée comme nom de variable, en conflit avec la fonction intégrée liste() . Pour résoudre ce problème, renommez la variable ou accédez explicitement au fonction liste() du module intégré.
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)>
Sortir
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 4, in moreNumbers = list(range(10,21)) TypeError: 'list' object is not callable>
Utilisation abusive des parenthèses
Dans le code ci-dessous Utilisation abusive des parenthèses au lieu des crochets pour l'indexation des listes, provoquant un ' liste ' L'objet n'est pas une erreur appelable.
Python3 items = ['Pencil', 'Eraser', 'Gel Pen', 'Ruler'] print(items(3))>
Sortir
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 3, in print(items(3)) TypeError: 'list' object is not callable>
La méthode entre en conflit avec la propriété.
Dans l'exemple ci-dessous, l'erreur se produit en raison d'un conflit de nom entre la méthode Des marques() et les marques de propriété. Ici, la classe Étudiant a un attribut de notes, qui est initialement attribué sous forme de liste contenant les notes de l'étudiant. Cependant, la classe définit également une méthode, Des marques() , qui renvoie la même liste de marques.
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())>
Sortir
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 11, in print(student.marks()) TypeError: 'list' object is not callable>
Solution pour L'objet « liste » Python n'est pas appelable en Python
Ci-dessous, vous trouverez les approches pour résoudre l'objet « liste » de Python qui n'est pas appelable en Python.
- Corriger le nom de la variable
- Utilisation correcte des parenthèses
- Renommer la méthode et l'attribut du conflit
Corriger le nom de la variable
je n la solution ci-dessous renomme la variable liste pour éviter d'observer les noms de fonctions intégrées. Utilisez des crochets pour l'indexation au lieu de parenthèses pour accéder aux éléments de la liste. Imprimez les deux listes pour afficher leur contenu.
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)>
Sortir
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]>
Utilisation correcte des parenthèses
Pour accéder à un élément de liste, utilisez toujours des crochets, comme utilisés dans le code ci-dessous.
Python3 items = ['Pencil', 'Eraser', 'Gel Pen', 'Ruler'] print(items[3])>
Sortir
Ruler>
Renommer la méthode et l'attribut du conflit
En renommant la propriété en Des marques et la méthode pour get_marks() , nous éliminerons le conflit de nom, en veillant à ce que étudiant.get_marks() récupère la liste des marques sans rencontrer le TypeError.
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())>
Sortir
[95, 67, 81, 64, 87]>