Python 迭代器对象iterator

(1) 定义:可以被next()函数调用并返回下一个值的对象。

(2) 语法

class 迭代器类名:
    def __init__(self, 聚合对象):
        self.聚合对象= 聚合对象 
 
    def __next__(self): 
        if 没有元素:
            raise StopIteration
            return 聚合对象元素

遍历商品控制器

class CommodityController:
      pass

controller = CommodityController()
controller.add_commodity("铅笔")
controller.add_commodity("倚天剑")
controller.add_commodity("奥特曼")

for item in controller:
    print(item)

class CommodityIierator:
    def __init__(self, list_iterator):#3-建立迭代器对象
        self.list_iterator= list_iterator
        self.i=0
    def __next__(self):#4-定义迭代方法
        if self.i>=len(self.list_iterator):
            raise StopIteration
        item=self.list_iterator[self.i]
        self.i+=1
        return item


class CommodityController:
    def __init__(self):
        self.__list_commodity=[]
    def __iter__(self): #1-为对象添加iter成为迭代器对象
        return CommodityIierator(self.__list_commodity) #2-建立迭代器
    def add_commodity(self,item):
        self.__list_commodity.append(item)

passcontroller = CommodityController()
passcontroller.add_commodity("铅笔")
passcontroller.add_commodity("倚天剑")
passcontroller.add_commodity("奥特曼")
for item in passcontroller:
    print(item)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值