python中判断实例可迭代地几种方式
1. 利用 __iter__内建属性
if hasattr(obj, '__iter__') : print 'iterable'
这种方法不能检测字符串,如:hasattr('', '__iter__')返回False。
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'
日行一善, 日写一撰