Ситуация: во время работ над проектом нам понадобилось добавить в него список и кортеж с какими-то данными, а потом вывести значения первых элементов. Сделаем всё наглядно, чтобы сразу было понятно, какого типа каждая переменная:
# создаём пустой список
lst = []
# добавляем один элемент в список
lst.append('Привет')
# выводим первый элемент
print(lst(0))
Вроде всё правильно, но при запуске получаем ошибку:
❌ TypeError: 'list' object is not callable
Что это значит: Python говорит, что он не может вызвать объект типа «список», чтобы он сам что-то сделал.
Когда встречается: когда мы пишем команды или операторы так, что Python воспринимает это как вызов функции и пытается её выполнить. А её нет — есть только неправильно записанная команда, отсюда и ошибка.
Как исправить ошибку TypeError: object is not callable
Почти всегда ошибка TypeError: object is not callable появляется в том случае, когда мы указываем параметры в круглых скобках — интерпретатор сразу воспринимает это как вызов функции, и происходит такое:
- Python встречает команду с круглыми скобками в конце.
- Это сразу воспринимается как вызов функции или метода объекта.
- Python пытается вызвать эту функцию, чтобы отработать текущую команду.
- Когда он обнаруживает, что такой функции или такого метода у объекта нет — останавливается и выводит ошибку.
В нашем случае, чтобы исправить ошибку TypeError: object is not callable, достаточно поменять круглые скобки на квадратные. Так Python поймёт, что мы не пытаемся вызвать метод (которого нет у списка), а обращаемся к конкретному элементу:
# создаём пустой список
lst = []
# добавляем один элемент в список
lst.append('Привет')
# выводим первый элемент
print(lst[0])