知识点有点散,只能这样记录了
1、这边是和遍历有关的:
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)
还有一种方法,没看明白
2、迭代器很久很久之前学过next()是敲一下,打印一下。敲一下,打印一下。这里也是一样
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))
3、迭代器的一些机理说明
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
4、iter的本质:
iter的本质是什么?iter的本质是,把东西搞成可迭代器,把对象放过来就是迭代器,然后可以用next去访问迭代器。