È possibile sovraccaricare i metodi di operatore e catena Python [] (__getitem__)
utilizzando il riferimento di memoria iniziale.Overload [] metodi Python per operatore e concatenamento utilizzando un riferimento di memoria
Immaginate ho una classe Math
che accetta un elenco di numeri interi, in questo modo:
class Math(object):
def __init__(self, *args, **kwargs):
assert(all([isinstance(item, int) for item in list(args)]))
self.list = list(args)
def add_one(self):
for index in range(len(self.list)):
self.list[index] += 1
e voglio fare qualcosa di simile:
instance = Math(1,2,3,4,5)
instance[2:4].add_one()
Dopo l'esecuzione di questo codice instance.list
dovrebbe essere [1,2,4,5,5]
, è possibile?
So che potrei fare qualcosa come add_one(2,4)
, ma questo non è lo stile dell'API che vorrei avere se possibile.
Grazie
'xrange (* self.slice.indices (len (self.math.list)))' sembra terribilmente unpitonico. C'è un modo migliore? – Eric
Inoltre, stai mixando 'self.fields' e' self.list' – Eric
@Eric: Ho rimosso Math.add_one non necessario, e sì che xrange (* ...) sembra terribilmente ingombrante, ma non lo so un modo più breve. –