Настройте Python Slicing, пожалуйста, сообщите

У меня есть класс, который является подклассом объекта списка. Теперь мне нужно заняться нарезкой. Судя по всему, что я прочитал в интертубах, это должно быть сделано с помощью метода __ getitem __ . По крайней мере, в Python 2.7+, который я использую. Я сделал это (см. Ниже), но метод __ getitem __ не вызывается, когда я передаю фрагмент. Вместо этого выполняется срез и возвращается список. Я хочу вернуть новый экземпляр myList.

Пожалуйста, помогите мне обнаружить, что не так.

Спасибо!

class myList(list):

    def __init__(self, items):

        super(myList, self).__init__(items)
        self.name = 'myList'


    def __getitem__(self, index):

        print("__getitem__")
        if isinstance(index, slice):
            print("slice")
            return self.__class__(
                self[x] for x in range(*index.indices(len(self)))
                )
        else: return super(myList, self).__getitem__(index)

if __name__ == "__main__":
    print("\nI'm tesing out custom slicing.\n")

    N = 10
    L = myList(range(N))

    L3 = L[3]
    L02 = L[:2]
7
задан gary 25 February 2011 в 00:08
поделиться