序列:列表,元组,字典等

一个序列中的魔术方法:

__len__(self)

在使用len(obj)函数的时候会调用这个魔术方法。

如果对一个对象没有实现__len__的情况下使用了len()函数就会报错,如下

__getitem__(self,key)

在使用下标操作temp[‘key’]以及切片操作的时候会执行这个魔术方法。

同样支持切片操作

如果是单个选取的话item是int类型,如果是切片操作的话item是slice类型,如下

Slice的数据类型拥有三个属性值,分别是起始,结束,步长

__setitem__(self,key,value)

在给这个容器设置key和value的时候会调用这个魔术方法。

__delitem__(self,key)

在删除容器中的某个key对应的这个值的时候会调用这个魔术方法。

__iter__(self)

在遍历这个容器的时候,会调用容器的这个方法,然后返回一个迭代器,再调用这个迭代器的__next__方法。

__reversed__(self)

在调用reversed(obj)函数的时候会调用这个方法。 以下代码将上面这些魔术方法总结起来,写一个自定义的容器,并且能够实现head、tail、last、drop和take的列表类。