Список також є об’єктом, який використовується для зберігання елементів різних типів даних. Під час використання списку в наших програмах на Python зазвичай можна побачити помилку, що об’єкт «список» неможливо викликати. У цій статті ми дізнаємося, чому виникає ця помилка та як її усунути.
Що означає те, що об’єкт «список» не можна викликати в Python?
The об’єкт «список» не можна викликати помилка — типова помилка виконання, з якою стикаються розробники Python. Це відбувається, коли ви намагаєтесь викликати об’єкт списку, ніби це функція. У Python списки — це об’єкти, які містять упорядковану колекцію елементів. Доступ до них здійснюється за допомогою індексування або нарізки, а не шляхом виклику подібних функцій.
Синтаксис
''list' object is not callable'>
Нижче наведено причини того, що об’єкт «список» Python неможливо викликати Python :
- Ім'я змінної Конфлікти з функцією.
- Неправильне використання круглих дужок
- Метод конфліктує з Property.
Ім'я змінної конфліктує з функцією.
У наведеному нижче коді список призначено як ім’я змінної, що суперечить вбудованій функції список() . Щоб вирішити цю проблему, перейменуйте змінну або явно перейдіть до функція list(). від вбудований модуль.
ядро javaPython3
# 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)>
Вихід
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 4, in moreNumbers = list(range(10,21)) TypeError: 'list' object is not callable>
Неправильне використання круглих дужок
У наведеному нижче коді неправильне використання круглих дужок замість квадратних дужок для індексування списку, що спричиняє « список «об’єкт не викликається помилкою.
Python3 items = ['Pencil', 'Eraser', 'Gel Pen', 'Ruler'] print(items(3))>
Вихід
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 3, in print(items(3)) TypeError: 'list' object is not callable>
Метод конфліктує з Property.
У прикладі нижче помилка виникає через конфлікт імен між методами позначки() і знаки власності. Тут клас студента має атрибут marks, який спочатку призначається як список, що містить оцінки студента. Однак клас також визначає метод, позначки() , який повертає той самий список позначок.
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())>
Вихід
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 11, in print(student.marks()) TypeError: 'list' object is not callable>
Рішення для Об’єкт «список» Python не можна викликати в Python
Нижче наведено підходи до розв’язання об’єкта списку Python, який неможливо викликати в Python
- Правильна назва змінної
- Правильне використання круглих дужок
- Перейменуйте метод і атрибут конфлікту
Правильна назва змінної
я У наведеному нижче рішенні перейменуйте змінну список щоб уникнути затінення імен вбудованих функцій. Використовуйте квадратні дужки для індексування замість дужок для доступу до елементів у списку. Роздрукуйте обидва списки, щоб відобразити їхній вміст.
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)>
Вихід
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]>
Правильне використання круглих дужок
Щоб отримати доступ до елемента списку, завжди використовуйте квадратні дужки, як у наведеному нижче коді.
Python3 items = ['Pencil', 'Eraser', 'Gel Pen', 'Ruler'] print(items[3])>
Вихід
Ruler>
Перейменуйте метод і атрибут конфлікту
Перейменувавши властивість на позначки і метод до get_marks() , ми усунемо конфлікт імен, забезпечивши це student.get_marks() отримує список позначок, не зустрічаючи TypeError.
клас проти об'єкта javaPython3
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())>
Вихід
[95, 67, 81, 64, 87]>