O listă este, de asemenea, un obiect care este folosit pentru a stoca elemente de diferite tipuri de date. Este obișnuit să vedeți că obiectul de eroare „listă” nu este apelabil în timp ce utilizați lista în programele noastre Python. În acest articol, vom afla de ce apare această eroare și cum să o rezolvăm.
Ce înseamnă că obiectul „listă” nu este apelabil în Python?
The obiectul „listă” nu poate fi apelat eroarea este o eroare frecventă de rulare întâlnită de dezvoltatorii Python. Apare atunci când încercați să apelați un obiect listă ca și cum ar fi o funcție. În Python, listele sunt obiecte care dețin o colecție ordonată de articole. Ele sunt accesate folosind indexare sau tăiere, nu apelându-le ca funcții.
Sintaxă
''list' object is not callable'>
Mai jos, sunt motivele pentru care obiectul „listă” Python nu poate fi apelat Piton :
- Nume variabilă Conflicte cu funcția.
- Folosirea greșită a parantezelor
- Metoda intră în conflict cu Proprietatea.
Numele variabilei intră în conflict cu funcția.
În codul de mai jos, lista este atribuită ca nume de variabilă, în conflict cu funcția încorporată listă() . Pentru a rezolva acest lucru, fie redenumiți variabila, fie accesați în mod explicit funcția list(). de la modulul încorporat.
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)>
Ieșire
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 4, in moreNumbers = list(range(10,21)) TypeError: 'list' object is not callable>
Folosirea greșită a parantezelor
În codul de mai jos Utilizarea greșită a parantezelor în loc de paranteze drepte pentru indexarea listelor, provocând un „ listă „Obiectul nu este o eroare apelabilă.
Python3 items = ['Pencil', 'Eraser', 'Gel Pen', 'Ruler'] print(items(3))>
Ieșire
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 3, in print(items(3)) TypeError: 'list' object is not callable>
Metoda intră în conflict cu Proprietatea.
În exemplul de mai jos, eroarea apare din cauza unui conflict de denumire între metodă semne() și mărcile de proprietate. Aici, clasa Student are un atribut note, care este inițial atribuit ca o listă care conține notele elevului. Cu toate acestea, clasa definește și o metodă, semne() , care returnează aceeași listă de mărci.
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())>
Ieșire
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 11, in print(student.marks()) TypeError: 'list' object is not callable>
Solutie pt Obiectul „listă” Python nu este apelabil în Python
Mai jos, sunt abordările pentru a rezolva obiectul „listă” Python care nu este apelabil în Python
- Numele corect al variabilei
- Utilizarea corectă a parantezelor
- Redenumiți metoda și atributul conflictului
Numele corect al variabilei
eu n soluția de mai jos redenumiți variabila listă pentru a evita umbrirea numelor de funcții încorporate. Utilizați paranteze drepte pentru indexare în loc de paranteze pentru a accesa elementele din listă. Imprimați ambele liste pentru a le afișa conținutul.
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)>
Ieșire
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]>
Utilizarea corectă a parantezelor
Pentru a accesa un articol din listă, utilizați întotdeauna paranteze drepte, așa cum este folosit în codul de mai jos.
Python3 items = ['Pencil', 'Eraser', 'Gel Pen', 'Ruler'] print(items[3])>
Ieșire
Ruler>
Redenumiți metoda și atributul conflictului
Prin redenumirea proprietății în semne iar metoda de a get_marks() , vom elimina conflictul de denumire, asigurându-ne că student.get_marks() preia lista de semne fără a întâlni 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())>
Ieșire
[95, 67, 81, 64, 87]>