for循环的原理:
1.获取迭代器
2.循环获取下一个元素
3.遇到异常停止循环
可以被for循环的原理--能被for循环的对象必须具有__iter__()方法(即可迭代对象)
PS:具有__iter__()方法的对象就是可迭代对象
# 1.获取迭代器
iterator = list01.__iter__()
# 2.循环获取下一个元素
while True:
try:
item = iterator.__next__()
print(item)
# 3.遇到异常停止循环
except StopIteration:
break
list02 = ["哆啦A梦", "天线宝宝", "东京猫猫"]
iterator02 = list02.__iter__()
while True:
try:
item = iterator02.__next__()
print(item)
except StopIteration:
break
list03 = {
"哆啦A梦": 1001,
"天线宝宝": 1002,
"东京猫猫": 1003,
}
iterator03 = list03.__iter__()
while True:
try:
item = iterator03.__next__()
print(item, list03[item])
except StopIteration:
break
class Graphic:
pass
class GraphicIterator:
def __init__(self, target):
self.__target = target
self.__index = 0
def __next__(self):
if self.__index > len(self.__target)-1:
raise StopIteration
temp = self.__target[self.__index]
self.__index += 1
return temp
class GraphicManager:
def __init__(self):
self.__graphics = []
def add_graphic(self, graphic):
self.__graphics.append(graphic)
def __iter__(self):
return GraphicIterator(self.__graphics)
if __name__ == '__main__':
manager = GraphicManager()
manager.add_graphic(Graphic())
manager.add_graphic(Graphic())
manager.add_graphic(Graphic())
iterator = manager.__iter__()
while True:
try:
item = iterator.__next__()
print(item)
except StopIteration:
break