在菜鸟教程上面练习写python代码,这是在迭代器那里遇到的问题
源代码是这样的
#!/usr/bin/env python
class mynum:
def __iter__(self):
self.a = 1
return self
def next(self):
x = self.a
self.a += 1
return x
myclass = mynum()
myiter = iter(myclass)
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
然后报错是这样的
Traceback (most recent call last):
File "./iter1.py", line 15, in <module>
print(next(myiter))
TypeError: instance has no next() method
后来我把__next__(self)改成了next(self)就好了
#!/usr/bin/env python
class mynum:
def __iter__(self):
self.a = 1
return self
def next(self):
x = self.a
self.a += 1
return x
myclass = mynum()
myiter = iter(myclass)
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
具体原因为