+-
Python:检查对象是否不是“数组类型”
我正在寻找一种方法来测试一个对象是不是“list-ish”类型,也就是说 – 不仅是对象不可迭代(例如 – 你也可以在一个字符串上运行它,或者在一个简单的上运行它实现iter的对象)但该对象不在列表系列中.我将“list”系列定义为list / tuple / set / frozenset,或者从那些继承的东西 – 但是 – 因为可能有一些我缺少的东西,我想找到一种比一般运行isinstance更通用的方法那些类型.

我想到了两种可行的方法,但是它们看起来有点尴尬,因为它们针对每种可能的列表类型进行了很多测试,而我正在寻找更通用的解决方案.

第一种选择:

return not isinstance( value, (frozenset, list, set, tuple,) )

第二种选择:

return not hasattr(value, '__iter__')

是否足够测试__iter__属性?有没有更好的方法来查找对象是否不是列表类型?

提前致谢.

编辑:

(引自评论@Rosh Oxymoron的解决方案):
现在更好地考虑定义,我认为说我需要在定义中找到不是数组类型的所有内容更合适,但它仍然可以是字符串/其他简单对象…检查集合.Iterable对于实现__iter__方法的对象,仍然会给我True.

最佳答案
没有术语’list-ish’并且没有魔法内置check_if_value_is_an_instance_of_some_i_dont_know_what_set_of_types.

你没有isinstance的解决方案(value,(frozenset,list,set,tuple,))非常好 – 它清晰明了.

点击查看更多相关文章

转载注明原文:Python:检查对象是否不是“数组类型” - 乐贴网