Перегрузка [] оператора python и методов цепочки с использованием ссылки на память

Можно ли перегрузить [] (__getitem__)оператор Python и методы цепочки, используя начальную ссылку на память.

Представьте, что у меня есть класс Math, который принимает список целых чисел, например:

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

И я хочу сделать что-то вроде этого:

instance = Math(1,2,3,4,5)
instance[2:4].add_one()

После выполнения этого кода instance.listдолжно быть [1,2,4,5,5], возможно ли это?

Я знаю, что мог бы сделать что-то вроде add_one(2,4), но это не тот стиль API, который мне бы хотелось иметь, если это возможно.

Спасибо

7
задан maraujop 9 June 2012 в 17:47
поделиться