为什么 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这个类的实例当然是一个可迭代对象而不是迭代器,当你遍历整个可迭代对象时调用迭代器



0
0

Python高效编程技巧实战

精选50个Python案例,源自实战,全面提升Python编程能力

2582 学习 · 360 问题

查看课程