python中判断实例可迭代地几种方式
1. 利用 __iter__内建属性if hasattr(obj, '__iter__') :
print 'iterable'这种方法不能检测字符串,如:hasattr('', '__iter__')返回False。 或者这样子:try :
i = iter(obj)
except TypeError, v :
print v
if hasattr(obj, '__iter__') :
print 'iterable'
print 'iterable'
try :
i = iter(obj)
except TypeError, v :
print v
i = iter(obj)
except TypeError, v :
print v
2. 假设obj是iterable的,如果不是的话,就抛出异常
try:
for v in obj:
print v
except TypeError, e:
print e
for v in obj:
print v
except TypeError, e:
print e
3. 检查实例是否是collections.Iterable子类
import collections
if isinstance(obj, collections.Iterable):
print 'iterable'
if isinstance(obj, collections.Iterable):
print 'iterable'