В Python, что это означает, является ли объект подписываемым или нет?
-
03-07-2019 - |
Вопрос
Какие типы объектов попадают в область "подписываемых"?
Решение
Это в основном означает, что объект реализует метод __ getitem __ ()
. Другими словами, он описывает объекты, которые являются «контейнерами», то есть они содержат другие объекты. Это включает списки, кортежи и словари.
Другие советы
Вдобавок ко мне, ниже приведены единственные встроенные модули, которые могут быть подписаны:
string: "foobar"[3] == "b"
tuple: (1,2,3,4)[3] == 4
list: [1,2,3,4][3] == 4
dict: {"a":1, "b":2, "c":3}["c"] == 3
Но ответ mipadi верный - любой класс, который реализует __ getitem __
, является подписанным
Объект сценариев - это объект, который записывает операции, выполненные с ним, и может сохранять их как " скрипт " который может быть воспроизведен.
Например, см. Framework сценариев приложений р>
Теперь, если Алистер не знал, о чем он спрашивал, он действительно имел в виду "подписку". объекты (отредактированные другими), тогда (как ответил и Мипади) это правильный:
Подписываемый объект - это любой объект, который реализует специальный метод __ getitem __
(списки рассуждений, словари).
Значение нижнего индекса в вычислительной технике заключается в следующем:"символ (условно записываемый как нижний индекс, но на практике обычно нет), используемый в программе, отдельно или вместе с другими, для указания одного из элементов массива".
Теперь, в простом примере, приведенном @пользователь2194711 мы можем видеть, что добавляющий элемент не может быть частью списка по двум причинам:-
1) На самом деле мы не вызываем метод append;потому что для этого нужно ()
чтобы назвать это.
2) Ошибка указывает на то, что функция или метод не поддаются подписке;означает, что они не поддаются индексации, как список или последовательность.
Теперь посмотрите на это:-
>>> var = "myString"
>>> def foo(): return 0
...
>>> var[3]
't'
>>> foo[3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'function' object is not subscriptable
Это означает, что в нем нет нижних индексов или элементов say function
как будто они происходят последовательно;и мы не можем получить к ним доступ так, как мы это делаем, с помощью []
.
Также;как мипади сказал в своем ответе;По сути, это означает, что объект реализует __getitem__()
способ.(если на него можно подписаться).Таким образом, ошибка привела к:
arr.append["HI"]
Ошибка типа:Объект 'builtin_function_or_method' не поддается подписке
У меня была такая же проблема. Я делал
arr = []
arr.append["HI"]
Таким образом, использование [
вызывало ошибку. Это должен быть arr.append (" HI ")