No.序列类的继承关系
Pyhton操作是通过Python的协议约束的,序列对象的操作也不例外,只有满足了某种协议,序列才有了相对应的操作。通过类的继承使得序列的功能越来丰富
1.序列类的类继承源码
|--|from collections import abc
|--|--|from _collections_abc import __all__
|--|--|--|--|__all__ = ["Sequence", "MutableSequence"]
1.1 Sequence的类继承源码
class Iterable(metaclass=ABCMeta): /*定义迭代协议的类*/
pass
class Sized(metaclass=ABCMeta): /*定义序列尺寸的类*/
pass
class Container(metaclass=ABCMeta):
pass
/*顶层序列类继承类*/
class Reversible(Iterable):
pass
class Collection(Sized, Iterable, Container):
pass
/*最顶层的序列类*/
class Sequence(Reversible, Collection):
pass
1.2 MutableSequence的类继承源码
class MutableSequence(Sequence):
/*特有的协议*/
@abstractmethod
def __setitem__(self, index, value):
raise IndexError
@abstractmethod
def __delitem__(self, index):
raise IndexError
1.2 MutableSequence与Sequence的区别
MutableSequence :可迭代类型序列
Sequence :不可迭代类型序列
在类继承关系中最底层的MutableSequence实现了可以动态修改序列的协议 setitem ,delitem