Voglio aggiungere alcuni attributi per il built-in list
tipo, quindi ho scritto questo:Python: come posso ereditare dal tipo di lista built-in?
class MyList(list):
def __new__(cls, *args, **kwargs):
obj = super(MyList, cls).__new__(cls, *args, **kwargs)
obj.append('FirstMen')
return obj
def __init__(self, *args, **kwargs):
self.name = 'Westeros'
def king(self):
print 'IronThrone'
if __name__ == '__main__':
my_list = MyList([1, 2, 3, 4])
print my_list
ma my_list
contiene solo l'elemento 'FirstMen'
. Perché il mio __new__
non funziona qui? E come dovrei ereditare da un tipo built-in come list
? È lo stesso per i tipi immutabili come str
?
Sede [questa domanda] (http://stackoverflow.com/questions/3945940/what-to-consider-before-subclassing-list) per un po ' discussione sul tema della lista di sottoclassi e come spesso non è quello che vuoi. (collections.MutableSequence, se disponibile, potrebbe essere un percorso migliore: leggi [Alex Martelli] (http://stackoverflow.com/a/3488283/487339)). – DSM
possibile duplicato: http://stackoverflow.com/q/4093029/596361 –