当前位置:编程学习 > 网站相关 >>

python自定义类实现for的实例与技巧

for 语句可以用大多数容器对象,如:
for e in [1,2,3]:
   print e
for e in (1,2,3):
   print e
for line in open("myfile.txt"):
   print line
--------
for 语句先调用容器对象的iter(),该函数返回一个定义了next()方法的迭代器对象,它在容器中逐一访问对象。
访问结束时候,next()会抛出一个异常(StopIteration)通知for语句循环结束,
 
class Reverse:
    def __init__(self,data):
        self.data = data
        self.index = len(data)
    """定义iter返回的方法 """
    def __iter__(self):
        return self
    """ 定义next方法"""
    def next(self):
        if self.index == 0:
            raise StopIteration
        self.index = self.index -1
        return self.data[self.index]
   
for char in Reverse(spam):
    print char
   
m
a
p
s
--------------------------------------
定义容器类的另一个方法,通过生成器
def reverse(data):
    for index in range(len(data)-1,-1,-1):
        yield data[index]
 
>>>for char in reverse(golf):
>>     print char
 
自动创建__iter__()和next()方法。两次调用之间临时变量和执行情况自动被保存起来,生成器结束的时候自动抛出 StopIteration异常。
补充:Web开发 , Python ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,