class info(object):
def __init__(self):
self.name = list()
self.age = list()
self.current_num = 0
def add(self, name, age):
self.name.append(name)
self.age.append(age)
def __iter__(self):
return self
def __next__(self):
if self.current_num < len(self.name):
result = self.name[self.current_num]
self.current_num += 1
return result
else:
raise StopIteration
stuname = info()
stuname.add("wang", 10)
stuname.add("zhang", 12)
stuname.add("li", 14)
for names in stuname:
print(names)
wang
zhang
li
学习到的点:
1.__init__方法是类的初始化方法,当创建新的实例对象时,会自动调用init方法,在init方法下的是类的属性。
2.self 是一个实例对象,在定义新的方法时需要用类似参数的形式传入。
3.类中必须要有iter方法,这样的类创建的对象才是可迭代的。
4.类中必须要有iter方法和next方法,这样的类的实例对象才可以作为迭代器。
5.iter的返回值是一个实例对象,如果想使其变为迭代器,所以在同一个类中加入next方法,这样这个类的对象既是可迭代又可以作为迭代器。
6.迭代过程第一步会查看该对象是否可迭代,既该类中是否有iter方法,有则进行下一步。第二步会使用迭代对象中的iter方法中的返回值作为迭代器。第三步会使用迭代器中的next方法,并将其返回值作为迭代的返回值返回。
7.StopIteration 是打断迭代的一种方法。