知识点有点散,只能这样记录了
- class Person:
- def __init__(self):
- self.result = 1
- def __getitem__(self, item):
- self.result += 1
- if self.result >= 6:
- raise StopIteration('停止遍历')
- return self.result
- pass
-
- p = Person()
- for i in p:
- print(i)
还有一种方法,没看明白
- class Person:
- def __init__(self):
- self.result = 1
- def __next__(self):
- self.result += 1
- if self.result >= 6:
- raise StopIteration('无法打印')
- return self.result
- p =Person()
- print(next(p))
- print(next(p))
- print(next(p))
- class Person:
- def __init__(self):
- self.age = 1
- def __iter__(self):
- self.age = 1
- return self
- def __next__(self):
- self.age += 1
- if self.age >= 6:
- raise StopIteration('stop')
- return self.age
- p=Person()
- for i in p:
- print(i)
- for i in p:
- print(i)
- print(p.age)
在这里说一下,迭代器一定能通过next访问,但是能通过next访问的不一定是迭代器
在这里 for in 的这个结构能用好多次!!!
具体方法机理为:用for in访问迭代器的时候会访问def__liter__这样一个方法。然后不断地去调用next方法获取数据,直到碰到异常为止
第二次使用p实例的时候,又访问 又初始化为1 了

只有在两个方法都实现了,才是一个完整的迭代器!!!一个是iter 一个是next
iter的本质是什么?iter的本质是,把东西搞成可迭代器,把对象放过来就是迭代器,然后可以用next去访问迭代器。