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

[Решено] Типеррера: «INT» Объект не подписан в Python

Python Roises TypeError: Объект не подписан, если вы попытаетесь использовать индексирование на объекте, который не подписан. Чтобы исправить это, вы можете: Typast или оберните не подписанный объект к подписанному объекту, как строка, список, кортеж или словарь, или удалить вызов индекса, OroverWrite метод __getitem__ в вашей программе. ✍ Проблема обзора: как исправить … [Решено] Типеррера: «INT» Объект не подписан в Python Подробнее »

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

  • Python поднимает Типерр: Объект не подписан Если вы попытаетесь использовать индексирование на объекте, который не подписан. Чтобы исправить это, вы можете:

    • Typast или оберните не подписанный объект к подписанному объекту, как строка, список, кортеж или словарь или,
    • Удалить указатель вызова или
    • Перезаписать __getitem__ Метод в вашей программе.

✍ Обзор

Проблема: Как исправить ” Типеррера:” INT ‘Объект не подписан “в Python?

Пример:

number = int(input("Enter a number: "))
print("reversed num = ", number[::-1])

Выход:

Enter a number: 123
Traceback (most recent call last):
  File "D:/PycharmProjects/PythonErrors/rough.py", line 2, in 
    print("reversed num = ", number[::-1])
TypeError: 'int' object is not subscriptable

Вы столкнулись с этой глупой ошибкой? Have you encountered this stupid error? 😒

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

◈ Типеррера: «INT» объект не подписан

Прежде чем понять, что вышеупомянутое Типеррор средства и причина его возникновения; Давайте погрузиться в важный вопрос, связанный с TypeError: «INT» объект не подписан Отказ

📌 Что объект не подписывает среднее значение в Python?

В Python, когда один объект может содержать другой объект, это подписан Отказ In Python, when one object can contain another object, it is subscriptable . In simple terms, subscriptable objects. Thus Strings , tuples , lists , and dictionaries are subscriptable

📜 Note: In Python, subscriptable objects implement the __getitem__() method. However, non-subscriptable objects like sets , integers , etc., do not have the __getitem__ attribute. Примечание:

Пример:

my_list = ['Python', 'Java', 'Golang']
my_set = {'Python', 'Java', 'Golang'}
my_integer = 100
print("Is list subscriptable? ", hasattr(my_list, '__getitem__'))
print("Is set subscriptable? ", hasattr(my_set, '__getitem__'))
print("Is integer subscriptable? ", hasattr(my_integer, '__getitem__'))

Выход:

Is list subscriptable?  True
Is set subscriptable?  False
Is integer subscriptable?  False

Поэтому из приведенного выше примера ясно, что Целочисленный объект не подписан в Python Therefore, it is clear from the above example that an integer object is not subscriptable in Python

📌 Что вызывает TypeError: «INT» объект не подписан?

  • Не подписанные объекты не индексируются, как список, кортеж или строка. Как только вы пытаетесь реализовать индексацию на объектах, которые не подписаны, вы столкнетесь Типерр: Объект не подписан
  • В качестве целочисленного объекта не является подписку, таким образом, если вы попытаетесь использовать индекс целочисленного объекта, то Python выброс следующую ошибку: TypeError: «INT» объект не подписан Отказ

Таким образом, в приведенном выше примере, когда мы пытались получить доступ к индексу целого числа, а затем отменить его, Python поднял – TypeError: «INT» объект не подписан Отказ

Итак, как мы исправим эту ошибку? 🤔 Давайте посмотрим на методы, чтобы исправить/избежать таких ошибок.

🖋️ Решение 1: Tycast Целомерный объект к строкому объекту

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

  1. Вы можете напрямую принять пользователь ввод в качестве строки вместо целого числа. Однако мы не будем следить за этим методом, потому что это условие может варьироваться в зависимости от требований.
  2. Второй способ получения типов пользовательского ввода от целого числа к строке – использовать встроенный str () Метод в Python.
number = int(input("Enter a number: "))
rev = str(number)
print("reversed num = ", rev[::-1])

Выход:

Enter a number: 123
reversed num =  321

🖋️ Решение 2: переопределение __getitem__

Еще одна работа – вокруг нашей проблемы – перезаписать __getitem__ метод, который занимает один (индекс) аргумент Another work-around to our problem is to overwrite the __getitem__ method that takes one (index) argument i (in addition to the obligatory self argument) and returns the

class Rev:
    def __getitem__(self, i):
        return str(i)[::-1]


obj = Rev()
number = int(input("Enter a number: "))
print(obj[number])

Выход:

Enter a number: 123
321

Объяснение: В нашем случае мы перезаписываем __getitem__ Способ просто вернуть пользователь ввод в виде строки, обратившись на его индекс.

В Python, Объект не подписан Ошибка возникает в многочисленных сценариях. Следовательно, давайте посмотрим на некоторые другие сценарии, которые приводят к возникновению подобного Типеррор Отказ

⚠️ TypeError: ‘NoneType’ object is not subscriptable ️ TypeError: объект «NONETYPE» не подписан

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

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

Причина ошибки: Вы установили Переменная до стоимости Reason of Error: You set the variable to the value None

Решение:

print("Method 1: Wrap the Non-Indexable values in a list")
variable = [None]
print("Output: ", variable[0])
print()
print("Method 2: Overwrite __getitem__")
class X:
    def __getitem__(self, i):
        return f"Value {i}"
variable = X()
print(variable[0])

Выход:

Method 1: Wrap the Non-Indexable values in a list
Output:  None

Method 2: Overwrite __getitem__
Value 0

⚠️ TypeError: ‘builtin_function_or_method’ object is not subscriptable ️ TypeError: «STOVITIN_FUCTING_OR_METHOD» не подписан

Пример:

def foo(li):
    if li.pop['Subject'] == 'Physics':
        print("Every action has an equal and opposite reaction.")


list1 = [{'Subject': 'Physics', 'Name': 'Newton'},
         {'Subject': 'Maths', 'Name': 'Ramanujan'},
         {'Subject': 'Economics', 'Name': 'Smith'}]
foo(list1)

Выход:

Traceback (most recent call last):
  File "D:/PycharmProjects/PythonErrors/rough.py", line 9, in 
    foo(list1)
  File "D:/PycharmProjects/PythonErrors/rough.py", line 2, in foo
    if li.pop['Subject']=='Physics':
TypeError: 'builtin_function_or_method' object is not subscriptable

Решение:

Хотя li.pop является действительным выражением в Python, что приводит к ссылке на поп Метод, но в этом случае он на самом деле не вызывает этот метод. Вам нужно добавить открытые и закрывать скобки, чтобы вызвать метод, как показано ниже.

def foo(li):
    if li.pop(0)['Subject'] == 'Physics':
        print("Every action has an equal and opposite reaction.")


list1 = [{'Subject': 'Physics', 'Name': 'Newton'},
         {'Subject': 'Maths', 'Name': 'Ramanujan'},
         {'Subject': 'Economics', 'Name': 'Smith'}]
foo(list1)

# Output --> Every action has an equal and opposite reaction.

⚠️ Типеррера: «Набор» объект не подписан

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

my_set = {111, 222, 333}
print(my_set[2])

# TypeError: 'set' object is not subscriptable

Причина: Установить не является подписанным объектом в Python. Следовательно, вы не можете получить доступ к своим элементам, используя свой индекс.

Решение:

  1. Преобразовать набор в список или,
  2. Перезаписать метод __getitem__.
my_set = {111, 222, 333}

# Method 1
my_list = list(my_set)
print("Method 1 Output: ", my_list[2])


# Method 2
class Convert:
    def __getitem__(self, i):
        return [*i, ][2]


obj = Convert()
print("Method 2 Output: ", obj[my_set])

Выход:

Method 1 Output:  111
Method 2 Output:  111

Вывод

Вот некоторые рекомендуемые статьи, которые могут помочь вам в дальнейшем:

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

Я надеюсь, что эта статья помогла вам. Пожалуйста, Подписаться и Оставайтесь в курсе Для более захватывающих статей в будущем. Счастливое обучение! I hope this article helped you. Please

  • Вы хотите быстро освоить самые популярные Python IDE?
  • Этот курс приведет вас от новичка к эксперту в Пычарме в ~ 90 минут.
  • Для любого разработчика программного обеспечения имеет решающее значение для освоения IDE хорошо, писать, тестировать и отлаживать высококачественный код с небольшим усилием.

Присоединяйтесь к Pycharm MasterClass Сейчас и мастер Pycharm на завтра!

Я профессиональный Python Blogger и Content Creator. Я опубликовал многочисленные статьи и создал курсы в течение определенного периода времени. В настоящее время я работаю полный рабочий день, и у меня есть опыт в областях, таких как Python, AWS, DevOps и Networking.

Вы можете связаться со мной @: