Python对象"可下标"是什么意思?
什么样的对象可以被称为“可下标访问”的对象呢?
8 个回答
26
在计算机中,"下标"的意思是:一个符号(通常写作下标,但实际上不一定这样)在程序中使用,单独或与其他符号一起,用来指定数组中的某个元素。
现在,在@user2194711给出的简单例子中,我们可以看到,添加元素无法成为列表的一部分,原因有两个:
我们并没有真正调用添加的方法,因为调用它需要加上
()
。错误提示表明这个函数或方法不能使用下标;这意味着它们不能像列表或序列那样被索引。
现在看看这个:
>>> 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__()
这个方法。换句话说,它描述的是一些“容器”对象,也就是可以装其他对象的东西。比如字符串、列表、元组和字典都是这样的容器。