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]
,但这需要更改以下所有代码。