Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Python迭代模式实例详解

Python迭代模式实例详解

小云云
小云云asal
2018-03-30 16:50:191454semak imbas

本文主要和大家分享Python迭代模式实例详解,主要以代码的形式和大家分享,希望能帮助到大家。

# -*- coding: utf-8 -*-
"""
Created on Thu Mar 29 11:43:05 2018

@author: mz
"""

class Iterator(object):
    def Next(self):
        pass
    def HasNext(self):
        pass
    def First(self):
        pass
    
    def Forward(self):
        pass

class CocreteIterator(Iterator):
    def __init__(self, aggregate):
        self._aggregate = aggregate
    
    def Next(self):
        return self._aggregate.Next()
    
    def HasNext(self):
        return self._aggregate.HasNext()
    
    def First(self):
        return self._aggregate.First()
    
    def Forward(self):
        return self._aggregate.Forward()
    

class Aggregate(object):
    def CreateIterator(self):
        pass

    def Next(self):
        pass
    
    def HasNext(self):
        pass
    
    def First(self):
        pass
    
    def Attach(self, obj):
        pass
        
    def Forward(self):
        pass
 
    
class ConcreteAggregate(object):
    
    def __init__(self):
        self._lst = []
        self._index = 0
    
    def CreateIterator(self):
        return CocreteIterator(self)
    
    def Next(self):
        return self._lst[self._index]
    
    def HasNext(self):
        return self._index < len(self._lst)
    
    def First(self):
        self._index = 0
        return self._lst[0]
    
    def Attach(self, obj):
        self._lst.append(obj)
        
    def Forward(self):
        self._index += 1
        
    

if "__main__" == __name__:
    aggregate = ConcreteAggregate()
    
    aggregate.Attach(1)
    aggregate.Attach("2")
    aggregate.Attach("a")
    aggregate.Attach("b")
    aggregate.Attach("c")
    aggregate.Attach("45")
    
    it = aggregate.CreateIterator()
    
    while it.HasNext():
        print(it.Next())
        it.Forward()

运行结果:

1
2
a
b
c
45

Atas ialah kandungan terperinci Python迭代模式实例详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn