StudentList' object is not iterable
时间: 2023-12-25 16:28:24 浏览: 70
当我们想要用for循环迭代一个对象时,需要保证这个对象是可迭代的。可迭代对象是指实现了__iter__()方法的对象,该方法返回一个迭代器。而迭代器是实现了__next__()方法的对象,该方法返回下一个值。如果一个对象没有实现__iter__()方法,则它不是可迭代的,因此在使用for循环迭代该对象时会报错"TypeError: 'XXX' object is not iterable"。
在上述代码中,类Students并没有实现__iter__()方法,因此A对象不是可迭代的,无法使用for循环迭代。如果想要使A对象可迭代,需要在类中实现__iter__()方法并返回一个迭代器对象。下面是一个修改后的例子:
```python
class Students():
def __init__(self):
self.names = list()
def add(self, name):
self.names.append(name)
def show(self):
print(self.names)
def __iter__(self):
self.index = 0
return self
def __next__(self):
if self.index < len(self.names):
result = self.names[self.index]
self.index += 1
return result
else:
raise StopIteration
if __name__ == "__main__":
A = Students()
A.add("Bob")
A.add("Tom")
A.add("Joe")
A.add("Coe")
for i in A:
print(i)
A.show()
```
阅读全文