子类化内置列表

14 投票
1 回答
7271 浏览
提问于 2025-04-15 19:06

我想要创建一个新的列表类型,也就是在原来的 list 基础上进行扩展,让它在切片的时候返回的是这个新类型的对象,但现在切片返回的还是一个 list。请问有什么简单的方法可以做到这一点吗?

如果没有特别好的方法,我可以在里面用一个普通的列表,这样虽然有点麻烦,但也不是不可以。

这是我目前写的代码:

class Channel(list):
    sample_rate = 0
    def __init__(self, sample_rate, label=u"", data=[]):
        list.__init__(self,data)
        self.sample_rate = sample_rate
        self.label = label

    @property
    def nyquist_rate(self):
        return float(self.sample_rate) / 2.0

1 个回答

11

我想你应该重写一下 __getslice__ 这个方法,让它返回你自己类型的对象...

也许可以像下面这样做?

class MyList(list):
    #your stuff here

    def __getslice__(self, i, j):
        return MyList(list.__getslice__(self, i, j))

撰写回答