Python 扩展slice类
我试图创建一个类,该类的行为完全像一个切片,但它实现了Python 扩展slice类,python,python-3.x,slice,Python,Python 3.x,Slice,我试图创建一个类,该类的行为完全像一个切片,但它实现了\uuuu add\uuuu方法,将多个切片合并到一个切片中 一个简单的模型可以是: class cumslice(slice): def __add__(self, other): s1 = self.start e1 = self.end st1 = self.step s2 = other.start e2 = other.end
\uuuu add\uuuu
方法,将多个切片合并到一个切片中
一个简单的模型可以是:
class cumslice(slice):
def __add__(self, other):
s1 = self.start
e1 = self.end
st1 = self.step
s2 = other.start
e2 = other.end
st2 = other.step
s = s1 + st1*s2
st = st1*st2
e = min([e1, s1 + st1*e2])
return cumslice(s, e, st)
(请注意,我们需要一些if
来处理None
值。)
然而,上面的代码返回
TypeError: type 'slice' is not an acceptable base type
在不从头重新实现切片类型的情况下,是否可以执行类似的操作?
slice
作为“最终”实现,如果继承不可能,则不能作为子类的组合而不是继承。@sanyash您能解释这意味着什么吗?在类中执行以下操作:self.\u slice=slice(开始,停止,结束)
并获取self.\u slice.start
而不是self.start
当从slice
@sanyash继承时,这样做x[cumslice(0,10,2)]
将引发异常类型错误:列表索引必须是整数或切片,而不是cumslice
。我知道我可以做x[cumslice(0,10,2)。\u slice]
,但这需要更改以下所有代码。slice
作为“final”实现,如果不能实现继承,则不能作为子类组合而不是继承。@sanyash您能解释一下这意味着什么吗?在类中执行以下操作:self.\u slice=slice(开始、停止、结束)
并获取self.\u slice.start
而不是self.start
当从slice
继承时@sanyash这样做x[cumslice(0,10,2)]
将引发异常类型错误:列表索引必须是整数或片,而不是cumslice
。我知道我可以做x[cumslice(0,10,2)。\u slice]
,但这需要更改以下所有代码。