1. 协议
Python 中创建自定义序列通常的方式是继承内置的数据类型,使用collections模块中的UserDict UserList等数据。
如果要创建完全自定义的序列, 需要实现 Python 中自定义容器类型其中一些协议。
首先,有用于定义不可变容器的协议:要创建不可变容器,您只需要定义 __len__ 和 __getitem__
对于可变容器, 需要实现 __setitem__ 和 __delitem__。
如果容器对象需要支持迭代,还需要实现一个返回一个迭代器的 __iter__ 方法
方法 | 说明 | 使用 |
__len__(self) | 返回容器的长度 | len(obj) |
__getitem__(self, key) | 使用name访问容器内数据 | obj[name] |
__setitem__(self, key, value) | 为容器内数据赋值的行为 | obj[name] = value |
__delitem__(self, key) | 删除容器内指定数据 | del obj[name] |
__iter__(self) |
为容器返回一个迭代器 | iter(obj) for x in obj |
__contains__(self, key) | 判断是否包含某个数据, |