AttributeError простыми словами
Разбираем ошибку «у объекта нет такого атрибута или метода».
Что такое атрибут и метод
У объектов в Python есть атрибуты (данные) и методы (действия). Например, у строки есть методы перевести буквы в верхний регистр или убрать пробелы по краям. AttributeError возникает, когда вы просите у объекта то, чего у него нет: метод написан с опечаткой или не подходит для этого типа данных.
Самая коварная причина
Частый случай — сообщение про NoneType: «у None нет такого атрибута». Это значит, что переменная неожиданно оказалась пустой (None), а вы вызвали у неё метод. Обычно причина выше по коду: функция ничего не вернула, или значение не присвоилось так, как вы ожидали.
Как искать причину
Прочитайте сообщение целиком: в нём указан тип объекта и имя атрибута, которого нет. Проверьте, тот ли это тип, что вы думали, и нет ли опечатки в названии метода. Если фигурирует None, вернитесь назад и найдите, где переменная должна была получить значение, но не получила.
Частые вопросы
Почему пишет 'str' object has no attribute? Значит, у строки вызвали метод, которого у строк нет, — скорее всего опечатка или метод от другого типа данных.
Как быстрее понять объекты и методы? Через практику маленьких программ. В игре Дрон Кодер команды дрона — это по сути методы объекта, только наглядные и с мгновенным результатом.
Начать игру бесплатно