Una lista è anche un oggetto utilizzato per memorizzare elementi di diversi tipi di dati. È comune vedere l'errore che l'oggetto 'list' non è richiamabile mentre si utilizza l'elenco nei nostri programmi Python. In questo articolo impareremo perché si verifica questo errore e come risolverlo.
Cosa significa che l'oggetto 'elenco' non è richiamabile in Python?
IL L'oggetto 'list' non è richiamabile error è un errore di runtime comune riscontrato dagli sviluppatori Python. Si verifica quando provi a chiamare un oggetto elenco come se fosse una funzione. In Python, gli elenchi sono oggetti che contengono una raccolta ordinata di elementi. È possibile accedervi utilizzando l'indicizzazione o l'affettamento, non chiamandoli come funzioni.
Sintassi
''list' object is not callable'>
Di seguito sono riportati i motivi per cui l'oggetto 'elenco' di Python non è richiamabile Pitone :
10 milioni
- Nome variabile Conflitti con la funzione.
- Uso improprio delle parentesi
- Il metodo si scontra con la proprietà.
Il nome della variabile è in conflitto con la funzione.
Nel codice seguente, list viene assegnato come nome di variabile, in conflitto con la funzione integrata elenco() . Per risolvere questo problema, rinominare la variabile o accedere esplicitamente al file funzione lista() dal modulo integrato.
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)>
Produzione
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 4, in moreNumbers = list(range(10,21)) TypeError: 'list' object is not callable>
Uso improprio delle parentesi
Nel codice seguente Uso improprio delle parentesi anziché delle parentesi quadre per l'indicizzazione degli elenchi, causando un' elenco ' l'oggetto non è un errore richiamabile.
Python3 items = ['Pencil', 'Eraser', 'Gel Pen', 'Ruler'] print(items(3))>
Produzione
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 3, in print(items(3)) TypeError: 'list' object is not callable>
Il metodo si scontra con la proprietà.
Nell'esempio seguente, l'errore si verifica a causa di un conflitto di nomi tra il metodo segni() e i marchi di proprietà. In questo caso, la classe Studente ha un attributo voti, che viene inizialmente assegnato come un elenco contenente i voti dello studente. Tuttavia, la classe definisce anche un metodo, segni() , che restituisce lo stesso elenco di indicatori.
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())>
Produzione
numeri romani da 1 a 100
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 11, in print(student.marks()) TypeError: 'list' object is not callable>
Soluzione per L'oggetto 'elenco' di Python non è richiamabile in Python
Di seguito sono riportati gli approcci per risolvere l'oggetto 'elenco' di Python non richiamabile in Python
- Nome variabile corretto
- Uso corretto delle parentesi
- Rinominare il metodo e l'attributo di conflitto
Nome variabile corretto
IO Nella soluzione seguente rinominare la variabile elenco per evitare di oscurare i nomi delle funzioni integrate. Utilizzare parentesi quadre per l'indicizzazione invece delle parentesi per accedere agli elementi nell'elenco. Stampa entrambi gli elenchi per visualizzarne il contenuto.
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)>
Produzione
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]>
Uso corretto delle parentesi
Per accedere a un elemento dell'elenco, utilizzare sempre le parentesi quadre, come utilizzato nel codice seguente.
Python3 items = ['Pencil', 'Eraser', 'Gel Pen', 'Ruler'] print(items[3])>
Produzione
Ruler>
Rinominare il metodo e l'attributo di conflitto
Rinominando la proprietà in segni e il metodo per get_marks() , elimineremo il conflitto di nomi, garantendolo studente.get_marks() recupera l'elenco dei contrassegni senza incontrare 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())>
Produzione
[95, 67, 81, 64, 87]>