为什么 WeatherIterable([u'北京', u'沈阳', u'广州']) 不是一个 Iterator?
来源:3-2 如何实现可迭代对象和迭代器对象(2)

PearSheep
2017-08-11
按照老师的例子,t = WeatherIterable([u'北京', u'沈阳', u'广州']) 应该是一个 Iterator。 然而它是 Iterable却不是 Iterable,求解?谢谢!
t = WeatherIterable([u'北京', u'沈阳', u'广州']) print isinstance(t, Iterable) print isinstance(t, WeatherIterable) print isinstance(t, Iterator) print isinstance(t, WeatherIterator)
输出为
True True False False
写回答
1回答
-
钺箜
2017-08-20
iterable和iterator是不一样的,iterable是可迭代对象,iterator是迭代器。
可迭代对象可以为任意对象,不一定非得是基本数据结构,只要这个对象可以返回一个iterator(迭代器)
任何具有__next__()方法的对象都是迭代器,对迭代器调用next()方法可以获取下一个值。
按我的理解,这里WeatherIterable这个可迭代对象拥有一个迭代器WeatherIterator,WeatherIterable这个类的实例当然是一个可迭代对象而不是迭代器,当你遍历整个可迭代对象时调用迭代器
00
相似问题