【发布时间】:2019-08-20 21:07:59
【问题描述】:
某些类的实例在 Python 中是可迭代的,但只有 dunder “iter()”方法,而不是“next()”。
class Vector2d:
def __init__(self, x, y):
self.x = float(x)
self.y = float(y)
def __iter__(self):
return (i for i in (self.x, self.y))
v=Vector2d(1,2)
x1,x2=v
print(x1,x2)
iv=iter(v)
print(next(iv))
print(next(iv))
【问题讨论】:
-
你有什么问题?
-
__iter__返回的生成器对象确实有一个__next__方法。 -
是的。因为所有可迭代对象都有
__iter__方法,但只有迭代器有__next__
标签: python