# collections.abs模块中的抽象基类
在`collections.abc` 模块中定义了16个抽象基类,简要的UML类图。
```mermaid
classDiagram
Iterable <|-- Iterator
Iterable <|-- Sequence
Iterable <|-- Mapping
Iterable <|-- Set
Iterable <|-- MappingView
Container <|-- Sequence
Container <|-- Mapping
Container <|-- Set
Sized <|-- Sequence
Sized <|-- Mapping
Sized <|-- Set
Sized <|-- MappingView
Sequence <|-- MutableSequence
Mapping <|-- MutableMapping
Set <|-- MutableSet
Set <|-- ItemsView
Set <|-- KeysView
MappingView <|-- ItemsView
MappingView <|-- KeysView
MappingView <|-- ValuesView
class Callable
class Hashable
```
| ABC | Inherits from | Abstract Methods | Mixin Methods |
| :---------------- | :------------------------------- | :----------------------------------------------------------- | :----------------------------------------------------------- |
| `Container` | | `__contains__` | |
| `Hashable` | | `__hash__` | |
| `Iterable` | | `__iter__` | |
| `Iterator` | `Iterable` | `__next__` | `__iter__` |
| `Reversible` | `Iterable` | `__reversed__` | |
| `Generator` | `Iterator` | `send`, `throw` | `close`, `__iter__`, `__next__` |
| `Sized` | | `__len__` | |
| `Callable` | | `__call__` | |
| `Collection` | `Sized`, `Iterable`, `Container` | `__contains__`, `__iter__`, `__len__` | |
| `Sequence` | `Reversible`, `Collection` | `__getitem__`, `__len__` | `__contains__`, `__iter__`, `__reversed__`, `index`, and `count` |
| `MutableSequence` | `Sequence` | `__getitem__`, `__setitem__`, `__delitem__`, `__len__`, `insert` | Inherited `Sequence` methods and `append`, `reverse`, `extend`, `pop`, `remove`, and `__iadd__` |
| `ByteString` | `Sequence` | `__getitem__`, `__len__` | Inherited `Sequence` methods |
| `Set` | `Collection` | `__contains__`, `__iter__`, `__len__` | `__le__`, `__lt__`, `__eq__`, `__ne__`, `__gt__`, `__ge__`, `__and__`, `__or__`, `__sub__`, `__xor__`, and `isdisjoint` |
| `MutableSet` | `Set` | `__contains__`, `__iter__`, `__len__`, `add`, `discard` | Inherited `Set` methods and `clear`, `pop`, `remove`, `__ior__`, `__iand__`, `__ixor__`, and `__isub__` |
| `Mapping` | `Collection` | `__getitem__`, `__iter__`, `__len__` | `__contains__`, `keys`, `items`, `values`, `get`, `__eq__`, and `__ne__` |
| `MutableMapping` | `Mapping` | `__getitem__`, `__setitem__`, `__delitem__`, `__iter__`, `__len__` | Inherited `Mapping` methods and `pop`, `popitem`, `clear`, `update`, and `setdefault` |
| `MappingView` | `Sized` | | `__len__` |
| `ItemsView` | `MappingView`, `Set` | | `__contains__`, `__iter__` |
| `KeysView` | `MappingView`, `Set` | | `__contains__`, `__iter__` |
| `ValuesView` | `MappingView`, `Collection` | | `__contains__`, `__iter__` |
| `Awaitable` | | `__await__` | |
| `Coroutine` | `Awaitable` | `send`, `throw` | `close` |
| `AsyncIterable` | | `__aiter__` | |
| `AsyncIterator` | `AsyncIterable` | `__anext__` | `__aiter__` |
| `AsyncGenerator` | `AsyncIterator` | `asend`, `athrow` | `aclose`, `__aiter__`, `__anext__` |