logo

Jak naprawić obiekt „lista” nie jest wywoływalny w Pythonie

Lista to także obiekt służący do przechowywania elementów różnych typów danych. Często zdarza się, że obiektu „lista” błędu nie można wywołać podczas korzystania z listy w naszych programach w języku Python. W tym artykule dowiemy się, dlaczego pojawia się ten błąd i jak go rozwiązać.

Co to znaczy, że obiekt „lista” nie jest wywoływalny w Pythonie?

The Obiekt „list” nie jest wywoływalny error to częsty błąd wykonawczy napotykany przez programistów Pythona. Dzieje się tak, gdy próbujesz wywołać obiekt listy tak, jakby był funkcją. W Pythonie listy są obiektami przechowującymi uporządkowaną kolekcję elementów. Dostęp do nich można uzyskać za pomocą indeksowania lub krojenia, a nie poprzez wywoływanie ich jak funkcji.

Składnia



 ''list' object is not callable'>

Poniżej znajdują się przyczyny wystąpienia obiektu „lista” w Pythonie, którego nie można wywołać Pyton :

  • Nazwa zmiennej Konflikty z funkcją.
  • Niewłaściwe użycie nawiasów
  • Metoda koliduje z właściwością.

Nazwa zmiennej powoduje konflikt z funkcją.

W poniższym kodzie lista ma przypisaną nazwę zmiennej, co koliduje z wbudowaną funkcją lista() . Aby rozwiązać ten problem, zmień nazwę zmiennej lub jawnie uzyskaj dostęp do pliku funkcja list(). z moduł wbudowany.

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

Wyjście

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

Niewłaściwe użycie nawiasów

W poniższym kodzie Niewłaściwe użycie nawiasów zamiast nawiasów kwadratowych do indeksowania list, powodując „ lista Obiekt nie jest wywoływalnym błędem.

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

Wyjście

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

Metoda koliduje z właściwością.

W poniższym przykładzie błąd występuje z powodu konfliktu nazewnictwa pomiędzy metodą znaki() i znaki własności. Tutaj klasa Student ma atrybut oceny, który początkowo jest przypisany jako lista zawierająca oceny ucznia. Jednak klasa definiuje również metodę, znaki() , która zwraca tę samą listę znaków.

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

Wyjście

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

Rozwiązanie dla Obiektu „lista” w Pythonie nie można wywołać w Pythonie

Poniżej znajdują się podejścia do rozwiązania obiektu „lista” w Pythonie, którego nie można wywołać w Pythonie

  • Poprawna nazwa zmiennej
  • Prawidłowe użycie nawiasów
  • Zmień nazwę metody konfliktu i atrybutu

Poprawna nazwa zmiennej

I n poniższe rozwiązanie zmień nazwę zmiennej lista aby uniknąć przesłaniania wbudowanych nazw funkcji. Aby uzyskać dostęp do elementów listy, użyj nawiasów kwadratowych do indeksowania zamiast nawiasów. Wydrukuj obie listy, aby wyświetlić ich zawartość.

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

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

Prawidłowe użycie nawiasów

Aby uzyskać dostęp do elementu listy, zawsze używaj nawiasów kwadratowych, jak w poniższym kodzie.

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

Wyjście
Ruler>

Zmień nazwę metody konfliktu i atrybutu

Zmieniając nazwę właściwości na znaki i sposób na get_marks() , wyeliminujemy konflikt nazewnictwa, zapewniając to student.get_marks() pobiera listę znaków bez napotkania błędu 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())>

Wyjście
[95, 67, 81, 64, 87]>