Python对象"可下标"是什么意思?

634 投票
8 回答
1128708 浏览
提问于 2025-04-11 09:29

什么样的对象可以被称为“可下标访问”的对象呢?

8 个回答

26

在计算机中,"下标"的意思是:一个符号(通常写作下标,但实际上不一定这样)在程序中使用,单独或与其他符号一起,用来指定数组中的某个元素。

现在,在@user2194711给出的简单例子中,我们可以看到,添加元素无法成为列表的一部分,原因有两个:

  1. 我们并没有真正调用添加的方法,因为调用它需要加上()

  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

这意味着在function中没有下标或元素,就像在序列中那样;我们不能像通常那样用[]来访问它们。

另外,正如mipadi在他的回答中提到的,这基本上意味着这个对象实现了__getitem__()方法。(如果它是可以使用下标的)。

因此产生的错误是:

arr.append["HI"]

TypeError: 'builtin_function_or_method' object is not subscriptable

113

我随便想了一下,下面这些是唯一可以用下标访问的内置类型:

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__这个方法的类都可以用下标访问。

576

这基本上是说这个对象实现了 __getitem__() 这个方法。换句话说,它描述的是一些“容器”对象,也就是可以装其他对象的东西。比如字符串、列表、元组和字典都是这样的容器。

撰写回答