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 ,