Sto lavorando con una classe che emula un elenco python. Voglio restituirlo come un python list() quando accedo senza un indice.Emulazione di un elenco in Python
con una lista normale():
>>> a = [1,2,3] >>> a [1,2,3]
cosa voglio dire, in sostanza:
>>> a = MyList([1,2,3]) >>> a <MyList object at 0xdeadbeef>
io non riesco a capire quale metodo Dunder (se esiste) mi permettesse di personalizzare questo comportamento?
Penso che sarebbe __ ottenere __? anche se list() non implementa get/set/delete - credo perché è un built-in?
ho postato una risposta, ma in realtà io non sono sicuro di quello che vuoi dire. Puoi dare un esempio di ciò che vuoi ottenere? Se vuoi mostrare il tuo elenco quando digiti 'a' nella console, allora stai cercando il metodo' __repr__' –
Quello che stai vedendo nella shell interattiva quando inserisci solo il nome è la stringa repr (REPResentational) . Lo stesso con il primo, in cui un elenco reale emette una stringa simile al codice sorgente. Idealmente, 'eval (repr (object))' dovrebbe funzionare per tipi semplici. Quindi non lo stai "accedendo" quando lo mostri in quel modo, ma "lo stringa". – Keith
sì, è esattamente quello che stavo cercando. Ero confuso su quello che stava realmente accadendo lì. – la11111