python中的Iterable和Iterator对象及调用

  1. for的本质是什么?
    调用Iterable对象__iter__方法得到Iterator,然后不断调用__next__方法
  2. 什么是Iterable对象?
    可以一次一个返回数据的Object,需要实现__iter__方法返回Iterator对象
  3. 什么是Iterator对象?
    实现__iter__方法和__next__方法,(__iter__返回self即可)
  4. Object.getitem(self,key)?
    实现self[key]索引取值
class MyIterable():
    def __init__(self):
        self.data = [1,2,3,4,5]
    def __iter__(self):
        return MyIterator(self.data)
    def __getitem__(self,idx):
        return self.data[idx]

class MyIterator():
    def __init__(self,data):
        self.data = data
        self.counter = 0
    def __iter__(self):
        return self
    def __next__(self):
        if self.counter>=len(self.data):
            raise StopIteration()
        data = self.data[self.counter]  
        self.counter += 1
        return data
iter = MyIterable()
for i in iter:
    print(i)
1
2
3
4
5
# 如果没有__getitem__就会报错
iter[2]
3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值