目录
一:序列协议:只要实现了getitem和len方法,就会被认为是序列。
协议:
一:序列协议:只要实现了getitem和len方法,就会被认为是序列。
print(tuple(enumerate([1, 2, 3]))) #枚举函数
class IndexTuple():
def __init__(self, *args):
self.values = tuple(args)
self.index = tuple(enumerate(self.values))
def __len__(self):
return len(self.values)
def __getitem__(self, key): # key = 1
return self.index[key][1]
tu = IndexTuple(1, 2, 3, 4)
print(len(tu))
print(tu[3])
例2:
from enum import Enum
class traffictlight(Enum): #继承枚举类,枚举成员不可重复
RED=1 #枚举成员 RED是枚举的名字,1是枚举的值
YELLOW=2
GREEN=3
#枚举成员的比较 print(traffictlight.YELLOW.value == 1) 返回True
print(type(traffictlight.YELLOW))
print(traffictlight.YELLOW.name)
print(traffictlight.YELLOW.value)
print(traffictlight(2)) #通过枚举值获取枚举成员
def judge(color):
if color ==traffictlight.RED or color==traffictlight.YELLOW:
print("司机超速")
else:
print("正常行驶")
judge(traffictlight.GREEN)
#输出:
<enum'traffictlight'>
YELLOW
2
traffictlightYELLOW
正常行驶
二:迭代器协议
迭代器协议:让我们的类成可迭代的类,能够使用for循环迭代
1、迭代器协议
对有next方法的对象(也就是迭代器对象)自动调用next,直到结尾引发stopIteration。
2、迭代工具
迭代工具按迭代器协议处理迭代器。
常见工具有for,list()、tuple()、str.join()列表解析、in、map、sorted、zip、enumerate、filter、sum、any……
3、iterabel可迭代对象
实现了iter方法的对象叫做可迭代对象。
4、iterator迭代器
实现了next方法的对象叫做迭代器。
5、for-in语句的执行逻辑: 首先判断对象是否有iter方法,如果有,先it=iter&#x