小编典典

在__getitem__中实现切片

python

我正在尝试为创建的类创建矢量表示的切片功能。

到目前为止,我已经有了这段代码,我相信它将正确实现切片,但是每当我进行诸如v[4]v是矢量的调用时,python都会返回有关参数不足的错误。因此,我试图找出如何getitem在类中定义特殊方法来处理纯索引和切片。

def __getitem__(self, start, stop, step):
    index = start
    if stop == None:
        end = start + 1
    else:
        end = stop
    if step == None:
        stride = 1
    else:
        stride = step
    return self.__data[index:end:stride]

阅读 170

收藏
2020-12-20

共1个答案

小编典典

切片对象时,该__getitem__()方法将接收一个slice对象。简单地看startstopstep对成员的slice对象,以获得该片段的组件。

>>> class C(object):
...   def __getitem__(self, val):
...     print val
... 
>>> c = C()
>>> c[3]
3
>>> c[3:4]
slice(3, 4, None)
>>> c[3:4:-2]
slice(3, 4, -2)
>>> c[():1j:'a']
slice((), 1j, 'a')
2020-12-20