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



какие типы объектов попадают в домен "subscriptable"?

9425   5  

5 ответов:

Это означает, что объект реализует __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__ is subscriptable

скриптовый объект-это объект, который записывает операции, выполненные с ним, и он может хранить их как "сценарий", который можно воспроизвести.

например, см.: Application Scripting Framework

теперь, если Алистер не знал, что он спросил, И действительно имел в виду" подписные " объекты (как отредактировано другими), то (как и ответил мипади) это правильный:

объект subscriptable-это любой объект, реализующий __getitem__ специальные метод (думайте списки, словари).

у меня была такая же проблема. Я делал

arr = []
arr.append["HI"]

Так что с помощью [ вызывает ошибку. Он должен быть!--2-->

значение индекса в вычислениях является: "символ (условно записывается как Нижний индекс, но на практике обычно нет), используемый в программе, один или с другими, чтобы указать один из элементов массива."

теперь, в простом примере, приведенном @user2194711 мы видим, что добавляющий элемент не может быть частью списка по двум причинам: -

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

это означает, что в как они происходят в последовательностях; и мы не можем получить к ним доступ, как мы делаем, с помощью [].

и как mipadi сказал в своем ответе; это в основном означает, что объект реализует __getitem__() метод. (если он является подписным). Таким образом, ошибка:

arr.append["HI"]

TypeError:' builtin_function_or_method ' объект не является subscriptable

Comments

    Ничего не найдено.