2010-02-10 46 views
12

Tôi muốn phân loại loại list và đã cắt trả về một đối tượng thuộc loại hậu duệ, tuy nhiên nó trả về list. Cách mã tối thiểu để làm điều này là gì?Danh sách con được tạo trong danh sách

Nếu không có một cách gọn gàng để làm điều đó, tôi sẽ chỉ bao gồm một danh sách nội bộ hơi lộn xộn hơn, nhưng không phải là không hợp lý.

Mã của tôi cho đến nay:

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 

Trả lời

10

Tôi đoán bạn nên ghi đè __getslice__ phương pháp để trả lại một đối tượng kiểu của bạn ...

Có lẽ giống như sau?

class MyList(list): 
    #your stuff here 

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

Có thể sử dụng ghế dành cho điều này không? Một 'setattr ngây thơ (tự,' __getslice__ ', lambda * a, ** k: bất cứ điều gì() 'thất bại) - xem http://stackoverflow.com/q/29858405/281545 –

Các vấn đề liên quan