子类化内置列表
我想要创建一个新的列表类型,也就是在原来的 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))