Рубрики
Без рубрики

Python TypeError: Объект не подписан (как исправить эту глупую ошибку)

Вы встречаете эту глупую ошибку? Вы не одиноки — тысячи кодеров, как вы генерируете эту ошибку в тысячах проектов каждый месяц. Этот короткий учебник покажет вам именно, почему эта ошибка возникает, как это исправить, и как никогда больше не принимать ту же ошибку. Итак, давайте начнем! Python бросает в систему … Python TypeError: Объект не подписан (как исправить эту глупую ошибку) Подробнее »

Автор оригинала: Chris.

Вы встречаете эту глупую ошибку?

Вы не одиноки – тысячи кодировщиков, как вы генерируете эту ошибку в тысячах проектов каждый один месяц. Этот короткий учебник покажет вам именно, почему эта ошибка возникает, как это исправить, и как никогда больше не принимать ту же ошибку. Итак, давайте начнем!

Python бросает Объект типа DypeError не подписан Если вы используете индексацию с помощью квадратной обозначения кронштейна на объекте, который не индексируется. Это так, если объект не определяет __getitem __ () метод. Вы можете исправить это, удалив вызов индексации или определить __getitem__ метод.

Следующий фрагмент кода показывает минимальный пример, который приводит к ошибке:

variable = None
print(variable[0])
# TypeError: 'NoneType' object is not subscriptable

Вы установили Переменная к значению Нет Отказ Ценность Нет не является объектом контейнера, он не содержать другие объекты. Итак, код действительно не имеет никакого смысла – какой результат вы ожидаете от операции индексации?

Упражнение Перед тем, как я покажу вам, как это исправить, попробуйте разрешить ошибку себя в следующей интерактивной оболочке:

Если вы боретесь с индексацией в Python, посмотрите на следующие статьи на блог Finxter – особенно третий!

Статьи по Теме:

  • Индексирование в Python
  • Нарезание в Питоне
  • Настоятельно рекомендуется: Доступ к индексу по величинам в Python

Обратите внимание, что возникает аналогичная проблема, если вы устанавливаете переменную в целочисленное значение 42 вместо Нет ценить. Единственное отличие состоит в том, что сообщение об ошибке сейчас «Типерррез:« INT »объект не подписан« » Отказ

Вы можете исправить Не подписанный тип Dymerror путем упаковки ненадлежаемых значений в тип данных контейнера, например Список В Python:

variable = [None]
print(variable[0])
# None

Выход теперь это значение Нет И скрипт больше не бросает ошибку.

Альтернатива – определить __getitem__ Метод в вашем коде:

class X:
    def __getitem__(self, i):
        return f"Value {i}"

variable = X()
print(variable[0])
# Value 0

Вы перезаписываете __getitem__ метод, который занимает один (индекс) аргумент i (в дополнение к обязательной я аргумент) и возвращает Я -место “контейнера”. В нашем случае мы просто вернем строку «Значение 0» для элемента Переменная [0] и «Значение 10» Для элемента Переменная [10] Отказ Здесь не имеет большого смысла, но это минимальный пример, который показывает, как это работает.

Я надеюсь, что вы сможете исправить ошибку в вашем коде! Прежде чем идти, проверьте наш Бесплатные Python Cheat Steets Это научит вам основы в Питоне в минимальное время:

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.