class ClassMate(object):
def __init__(self):
self.names = list()
self.index = 0
def add(self,name):
self.names.append(name)
def __iter__(self):
return self
def __next__(self):
if self.index < len(self.names):
ret = self.names[self.index]
self.index += 1
return ret
else:
raise StopIteration
class_mate = ClassMate()
class_mate.add('张三')
class_mate.add('李四')
class_mate.add('王五')
for name in class_mate:
print(name)
from collections import Iterable
from collections import Iterator
class ClassMate(object):
def __init__(self):
self.names = list()
def add(self,name):
self.names.append(name)
def __iter__(self):
return ClassIterator(self)
class ClassIterator(object):
def __init__(self,obj):
self.obj = obj
self.index = 0
def __iter__(self):
pass
def __next__(self):
if self.index < len(self.obj.names):
ret = self.obj.names[self.index]
self.index += 1
return ret
else:
raise StopIteration
class_mate = ClassMate()
class_mate.add('张三')
class_mate.add("李四")
class_mate.add('王五')
for name in class_mate:
print(name)
class Fibonacci(object):
def __init__(self,num):
self.num = num
self.index = 0
self.a = 0
self.b = 1
def __iter__(self):
return self
def __next__(self):
if self.index < self.num:
ret = self.a
self.a,self.b = self.b,self.a+self.b
self.index += 1
return ret
else:
raise StopIteration
fib = Fibonacci(10)
for num in fib:
print(num)