В Python, что это означает, является ли объект подписываемым или нет?

StackOverflow https://stackoverflow.com/questions/216972

  •  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 ")

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top