如何确定对象"可编写脚本"

最近,我遇到了一个问题,我看到了这个错误: " TypeError:无订阅的对象" 如何确定对象是"可脚本"还是"不可脚本"?

# 回答1

" abcd" 在消息中写道 新闻:11 *********************************************************************************************** 可订阅:像列表一样支持索引操作员.
# 回答2

理查德·布罗迪(Richard Brodie)写道: 似乎不是内置功能或模块...或者只是您的 可订阅的定义?
# 回答3

ABCD写道: 最简单的答案是使用isInstance查看它是否是字符串,列表, 或元组: 如果是isInstance(变量,(str,list,tuple)): .. .. .. 现在的问题是,此答案无法解决问题. 您的代码正在尝试对错误类型做些事情 对象/变量是逻辑问题. -larry bates
# 回答4

理查德·布罗迪(Richard Brodie)写道: 正确的. 您可以检查此类 和 hasattr(x," __getItem__") 因为__getItem__方法用于索引. 丹尼尔
# 回答5

丹尼尔·埃弗斯(Daniel Evers)写道: 谢谢...那就是我想要的!
# 回答6

拉里·贝茨(Larry Bates)写道: 对于许多可脚本的对象,它将失败... 最好使用Daniel的解决方案或尝试/除外. 现在的问题是,此答案无法解决问题. 您的代码正在尝试对错误类型的对象/变量做点事,这是逻辑问题. 当然 !-) - - Bruno Desthuilliers python -c" print'@'.join(['.'.join([w [::-1] for p.split('.'.')]) p in'O ****@xiludom.gro'.split('@')])"
# 回答7

" abcd" 在消息中写道 新闻:11 ********************************@i39g2000cwa.googlegroups.com ... 是的,我想你只是感到困惑. 你在使用错误的单词, 毕竟.
# 回答8

ABCD写道: 它不是. 别再看. 还是您对订阅的定义? 这是对"可订阅"的正确定义 Python编程语言 - 以及隐含的良好范围 界面. - - Bruno Desthuilliers python -c" print'@'.join(['.'.join([w [::-1] for p.split('.'.')]) p in'O ****@xiludom.gro'.split('@')])"
# 回答9

ABCD写道: 通过尝试应用下标操作员('[]'). 如果它提出了 TypeError,那么它是不可订阅的. 但是,正如拉里·贝茨(Larry Bates)已经指出的那样,您的真正问题是逻辑 错误:您在假设有一个 可订阅的一个. - - Bruno Desthuilliers python -c" print'@'.join(['.'.join([w [::-1] for p.split('.'.')]) p in'O ****@xiludom.gro'.split('@')])"
# 回答10

ABCD写道:谢谢...这就是我想要的! 也许,但这不是一种特别的pythonic方法. 更好的是 可能是这样的: 尝试: x [0] x_is_subscriptable = true 除了typeError: x_is_subscriptable = false -peter

标签: python

添加新评论