当前位置:  开发笔记 > 编程语言 > 正文

在Python中,如果一个对象是可订阅的,它意味着什么?

如何解决《在Python中,如果一个对象是可订阅的,它意味着什么?》经验,为你挑选了5个好方法。

哪些类型的对象属于"可订阅"域?



1> mipadi..:

它基本上意味着该对象实现了该__getitem__()方法.换句话说,它描述了作为"容器"的对象,这意味着它们包含其他对象.这包括列表,元组和词典.



2> Dan..:

在我的脑海中,以下是唯一可订阅的内置插件:

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__都是可订阅的



3> tzot..:

可编写脚本的对象是一个记录对其执行的操作的对象,它可以将它们存储为可以重放的"脚本".

例如,请参阅:Application Scripting Framework

现在,如果Alistair不知道他问的是什么并且真正意味着"可订阅的"对象(由其他人编辑),那么(正如mipadi也回答)这是正确的:

可订阅对象是实现__getitem__特殊方法的任何对象(思考列表,字典).


请注意,我正在回答有关"可编写脚本"对象的原始问题,而不是其他人编辑的"可订阅",而不是Alistair.我真的希望阿利斯泰尔发表评论.

4> Vicrobot..:

计算中下标的含义是:"一个符号(在概念上写成,但在实践中通常不是),在程序中单独使用或与其他程序一起使用,以指定数组的一个元素."

现在,在@ user2194711给出的简单示例中,我们可以看到附加元素不能成为列表的一部分,原因有两个: -

1)我们并没有真正调用方法追加; 因为它需要()调用它.

2)错误表明该函数或方法不可订阅; 意味着它们不像列表或序列那样可索引.

现在看到这个: -

>>> var = "myString"
>>> def foo(): return 0
... 
>>> var[3]
't'
>>> foo[3]
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'function' object is not subscriptable

这意味着没有下标或说出function序列中出现的元素; 在我们的帮助下,我们无法像我们一样访问它们[].

也; 正如米帕迪在回答中说的那样; 它基本上意味着该对象实现了该__getitem__()方法.(如果是可订阅的).因此产生的错误:

arr.append["HI"]

TypeError:'builtin_function_or_method'对象不可订阅



5> 小智..:

我有同样的问题.我在做

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

因此使用[导致错误.它应该是arr.append("HI")

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有