python中判断实例可迭代地几种方式

1. 利用 __iter__内建属性
if hasattr(obj,  ' __iter__ ') :
     print  ' iterable '
这种方法不能检测字符串,如:hasattr('', '__iter__')返回False。
  或者这样子:
try :
    i = iter(obj)
except TypeError, v :
     print v

2.  假设obj是iterable的,如果不是的话,就抛出异常

try:
     for v  in obj:
         print v
except TypeError, e:
     print e

3. 检查实例是否是collections.Iterable子类
import collections
if isinstance(obj, collections.Iterable):
     print  ' iterable '

你可能感兴趣的:(python)