logo

Come risolvere l'oggetto 'list' non è richiamabile in Python

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]>