Python进阶12——序列类型继承关系

python中的序列类型杂谈

继承关系

在这里插入图片描述
在collection.abc中,可以看见所有的python序列基类。包括Set,Sequence等重要的基类,我们在python中要使用的类多继承于这些基类。

Sequence为例解析继承关系

在这里插入图片描述
在文件下找到Sequence类型,它明显继承了两个基类Reversible和Collection,Reversibe使得这个类是可以反转的
再看到Reversible类型,这个类型存在一个@abstractmethod修饰的抽象方法,在继承它的类型中,需要实现这个方法。
在这里插入图片描述
看回Sequence类型,最底下实现了__reversed__方法,用以反转这个序列。
在这里插入图片描述
再回到其继承的第二个基类Collection
在这里插入图片描述
它又继承了三个基类,Sized,Iterable,Container
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这三个类型又带了三个抽象方法(abstractmethod)len,contains,__iter__需要实现。
在这里插入图片描述
但是在这里只能看见__contains__和__iter__的实现,__len__则涉及到Cpython的C语言源码部分,不是一时半会能说清楚的。值得一提的是__contains__函数实现后可以直接调用本函数来实现if in 来判断元素是否在序列中,但是即便没有实现,也是可以经行if in的判断的,这时就是使用getitem函数从头到尾的遍历了。

MutableSequence

在这里插入图片描述
MutableSequence继承了Sequence但其增加了setitem,delitem,insert三个方法用来实现可变序列。
在这里插入图片描述
在这里插入图片描述
最后看到两个类的register部分,list被注册为可变类型,而tuple是不可变类型。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值