2010-02-10 8 views
12

Quiero subclase el tipo list y he cortado el retorno de un objeto del tipo descendiente, sin embargo, está devolviendo un list. ¿Cuál es la forma mínima de código para hacer esto?Lista incorporada de subclase

Si no hay una forma ordenada de hacerlo, incluiré una lista internamente que es un poco más desordenada, pero no irracional.

Mi código hasta ahora:

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 

Respuesta

10

supongo que debe reemplazar el método __getslice__ para devolver un objeto de su tipo ...

Tal vez algo como lo siguiente?

class MyList(list): 
    #your stuff here 

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

¿Se podría usar seattr para esto? Un 'setattr' ingenuo (self, '__getslice__', lambda * a, ** k: lo que sea que() 'falle) - ver http://stackoverflow.com/q/29858405/281545 –

Cuestiones relacionadas