什么是迭代器?迭代是如何完成的?

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 是打断迭代的一种方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值