class Countlist:
def __init__(self,*args):
self.values = [x for x in args]
self.count={}.fromkeys(range(len(self.values)),0)
def __len__(self):
return len(self.values)
def __getitem__(self, key):
self.count[key]+=1
return self.values[key]
class Fibs:
def __init__(self):
self.a=0
self.b=1
def __iter__(self):
return self
def __next__(self):#这里改写了next方法
self.a,self.b=self.b,self.a+self.b
return self.a
fibs=Fibs()
for each in fibs:
if each <1000:
print(each)
else:
break
class Fibs:
def __init__(self,n=20):
self.a=0
self.b=1
self.n=n
def __iter__(self):
return self
def __next__(self):
self.a,self.b=self.b,self.a+self.b
if self.a>self.n:
raise StopIteration
return self.a
fibs=Fibs(1000)
for each in fibs:
print(each)
结果
D:\recent\code\venv\Scripts\python.exe D:/recent/code/venv/test.py
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
下面用生成器也可以
def fibs():
a=0
b=1
while True:
a,b=b,a+b
yield a
for each in fibs():
if each>1000:
break
print(each)
结果
D:\recent\code\venv\Scripts\python.exe D:/recent/code/venv/test.py
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987