我正在尝试为创建的类创建矢量表示的切片功能。
到目前为止,我已经有了这段代码,我相信它将正确实现切片,但是每当我进行诸如v[4]v是矢量的调用时,python都会返回有关参数不足的错误。因此,我试图找出如何getitem在类中定义特殊方法来处理纯索引和切片。
v[4]
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]
切片对象时,该__getitem__()方法将接收一个slice对象。简单地看start,stop和step对成员的slice对象,以获得该片段的组件。
__getitem__()
slice
start
stop
step
>>> 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')