欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python3面向对象--迭代器模式迭代器

程序员文章站 2022-08-18 08:18:06
迭代器:设计模式的术语:拥有一个next()和done()方法的对象。1.python中:迭代是一个特征,任意一定义了__ next __就时一个迭代器2.迭代:从某个地方(比如一个列表)取出一个元素的过程,当我们使用一个循环来遍历某个东西时,这个过程本身叫做迭代。3.collections.abc模块抽象基类Iterator定义了python中的迭代器协议4. __iter __ 函数:实现Iterable接口,任何提供了iter方法的类都是可以迭代的,这一方法放回一个iterator实例,...

迭代器:

设计模式的术语:拥有一个next()和done()方法的对象。

1.python中:迭代是一个特征,任意一定义了__ next __就时一个迭代器

2.迭代:从某个地方(比如一个列表)取出一个元素的过程,当我们使用一个循环来遍历某个东西时,这个过程本身叫做迭代。

3.collections.abc模块抽象基类Iterator定义了python中的迭代器协议
4. __iter __ 函数:实现Iterable接口,任何提供了iter方法的类都是可以迭代的,这一方法放回一个iterator实例,并能够覆盖类中的所有元素。

5.迭代方法 :__ next __使得for循环以及其他支持迭代的特征可以调用从序列中获取新元素。
这一方法通过内置的next(iterator)访问。当遍历结束时,迭代器协议会抛出一个StopIteration异常。

6.访问迭代器中元素:for item in iterrtor 或者while

7.for 循环完全相同与迭代器协议

class Capitallterable:
    def __init__(self,string):
        self.string = string

    def __iter__(self):
        return Capitallterablor(self.string)
    #实现Iterrable接口,返回自己

class Capitallterablor:
    def __init__(self,string):
        self.words = [w.capitalize() for w in string.split()]
        self.index = 0

    def __next__(self):
        '使得for循环可以调用来从序列(以及其他支持迭代的特征)中获取新的元素'
        if self.index == len(self.words):
            raise StopIteration()

        word = self.words[self.index]
        self.index += 1
        return word

    def __iter__(self):
        return self

#c测试
iterable=Capitallterable('the quick browen for jumps over lazy dog')
iterator=iter(iterable)
#用while 访问
while True:
    try:
        print(next(iterator))
    except StopIteration:
        break
print('\n')

#测试 用for in 访问
for i in iterable:
     print(i)

The
Quick
Browen
For
Jumps
Over
Lazy
Dog


The
Quick
Browen
For
Jumps
Over
Lazy
Dog

Process finished with exit code 0

本文地址:https://blog.csdn.net/w1234567465/article/details/107425317

相关标签: python面向对象