classFib(object):def__init__(self):
self.a, self.b = 0, 1def__iter__(self):return self
def__next__(self):
self.a, self.b = self.b, self.a + self.b
if self.a > 10000:
raise StopIteration()
return self.a
def__getitem__(self, n):if isinstance(n, int):
a, b = 1, 2for x in range(n):
a, b = b, a + b
return a
if isinstance(n, slice):
start = n.start
stop = n.stop
if start isNone:
start = 0
a, b = 1, 1
L = []
for x in range(stop):
if x >= start:
L.append(a)
a, b = b, a + b
return L
# ------------------------
f = Fib()
for n in f:
print(n, end='\t')
print('\n--------------')
print(f[:5])