通过模拟部署 Python 内置 range 函数,熟悉一下自定义类。因为以前的 Python 把 range 定义成函数,自从 Python3 开始,range 变成了一个类。
class Range:
“““模拟内置 range 类。“““
def __init__(self, start, stop=None, step=1):
“““初始化一个 Range 实例时的代码部署。“““
if step == 0:
raise ValueError('步幅不能是0')
if stop is None:
start, stop = 0, start
self._length = max(0,(stop - start + step - 1)// step)
self._start = start
self._step = step
def __len__(self):
“““返回range实例中的元素数量。“““
return self._length
def __getitem__(self, i):
“““返回索引位 i 上的元素。“““
if i < 0:
k += len(self)
if not 0 <= i < self._length:
raise IndexError('超出索引范围了。')
return self._start + i * self._step